0

我的 .htaccess 文件看起来像这样,以便使我的网址从 /something.php 到 /something :

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

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

4

2 回答 2

1

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

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

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

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

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

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

于 2013-02-10T20:14:02.583 回答
0

试试看

  <FilesMatch "\.(php)$">
      RewriteRule ^(.*)$ /404.html [L,S]
  </FilesMatch>
于 2013-02-10T20:18:49.400 回答