У меня есть файл .htaccess с этими RewriteRules:
RewriteEngine On RewriteRule ^login$ login.php [L] RewriteRule ^index$ index.php [L] RewriteRule ^page/([^/]+)/?$ page.php?id=$1 [L,QSA]
Можно предотвратить прямой доступ ко всем этим файлам, но разрешить доступ только с помощью RewriteRule
Например, если кто-то звонит: «domain.com/ login » должен видеть страницу.
Но если кто-то называет « domain.com/ login.php », то не должен (в этом случае должен появиться 403 или 404 ошибка)
У вас может быть дополнительное правило для блокировки прямого доступа к файлам .php
:
RewriteEngine On RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC] RewriteRule ^ - [F] RewriteRule ^page/([^/]+)/?$ page.php?id=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] RewriteRule ^(.+?)/?$ /$1.php [L]
Вы можете добавить эту строку
RewriteRule login.php$ 403.php
РЕДАКТИРОВАТЬ:
Мне жаль, что это не сработает из-за внутреннего перенаправления
Попробуй это
RewriteCond %{ENV:REDIRECT_STATUS} !200 RewriteRule login.php$ 403.php [L]