В настоящее время у меня все мои страницы работают без их расширений .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]