如果请求.php则返回404

时间:2013-02-10 20:02:51

标签: php .htaccess

我的.htaccess文件看起来像这样,以便将我的网址从/something.php转换为/ something:

Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d   
RewriteRule ^(.*)$ $1.php [L]          

当请求php扩展时,它仍然有效。如果请求.php扩展名,我如何返回404?谢谢。

2 个答案:

答案 0 :(得分:1)

首先,您的方法应缩短为:

 RewriteCond %{REQUEST_FILENAME}.php -f
 RewriteRule ^(.*)$ $1.php [L]      

这会探测是否存在.php文件,而不是缺少其基本名称。

由于这是[LAST]规则,您可以在之后(或可能在RewriteRule / RewriteCond块之前)探测已存在的.php后缀:

 RewriteRule ^(.*)\.php$ - [F]

...或在这种情况下发出重定向。

答案 1 :(得分:0)

试试吧

  <FilesMatch "\.(php)$">
      RewriteRule ^(.*)$ /404.html [L,S]
  </FilesMatch>