返回404,如果被请求
我的.htaccess文件看起来像这样.PHP为了使我的网址从/something.php到/东西:返回404,如果被请求
Options -Multiviews
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L]
当请求的PHP扩展,它仍然有效。如果请求.php扩展名,我怎样才能返回404?谢谢。
首先,你的方法应缩短为:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
这种探针的PHP文件的存在,不是没有它的基本名称的。
由于这是[LAST]
规则,然后才能(或者可能是重写规则/块的RewriteCond之前)探头已经存在的.PHP后缀:
RewriteRule ^(.*)\.php$ - [F]
...或发出在这种情况下重定向。
尝试
<FilesMatch "\.(php)$">
RewriteRule ^(.*)$ /404.html [L,S]
</FilesMatch>
如果您使用超出范围300-399的响应代码值,您将基本上销毁重写链,这就是您不想这样做的原因(http://httpd.apache.org/docs/ current/rewrite/flags.html#flag_r) 这里可能不是一个大问题,但在更复杂的规则中,它肯定会造成一些头痛。 – brezanac 2013-02-10 20:39:47
@holodoc感谢您的通知 – 2013-02-10 21:12:49
请再解释和更多的单词,你正在尝试什么。使用一个例子。 – mario 2013-02-10 20:05:55
我想要它返回一个404错误,如果有人在URL中输入.php文件扩展名。因为我提供的代码会删除.php扩展名,但仍然允许用户输入。 – Zach 2013-02-10 20:09:31
您实际上想要返回HTTP/1.1 404 Not Found或仅重定向到您的自定义404页面? – brezanac 2013-02-10 20:32:46