Перенаправление на 404, если расширение .php запрашивается по URL-адресу

В настоящее время у меня все мои страницы работают без их расширений .php, используя mod_rewrite. Такие как:

www.mywebsite.com/noextension 

Однако, как мне перейти на перенаправление моих пользователей на страницу 404, если они решили добавить расширение .php к URL-адресу?

 www.mywebsite.com/noextension.php 

Мой htaccess выглядит так:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([a-zA-Z0-9]+)(/)?$ $1.php RewriteRule ^forums/([a-zA-Z0-9]+)(/)?$ forums.php?category=$1 [NC] 

Я пробовал такие вещи, как этот RewriteRule \.php$ - [R=404] , однако это всего лишь 404 каждой отдельной страницы, к которой я иду. Я предполагаю, что мне, возможно, придется использовать что-то вроде REQUEST_URI, чтобы делать то, что я прошу.

Что вы предлагаете мне добавить? Благодарю.

Попробуйте эти строки (разместите выше тех, что у вас уже есть):

 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^(.+)\.php - [F,L] 

Это правило блокирует (403 ошибки) прямой доступ к ЛЮБОЙ .php-файлу (но будет проходить через уже переписанные URL-адреса, когда правило переходит к следующей итерации).

TBH Я не уверен на 100%, что он будет работать (это зависит от вашей конфигурации Apache) … но учитывая, что у вас есть v2.2.x, он должен (он отлично работает на моем 2.2.17).


ОБНОВЛЕНИЕ: для «своего пинания моей домашней страницы веб-сайтов без / индекса до 404» добавьте эту строку до вышеприведенного правила:

 RewriteRule ^$ /index.php [QSA,L]