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]