htaccess предотвращает доступ к .php и разрешает только с RewriteRule

У меня есть файл .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]