如果在URL中请求.php扩展名,则重定向到404

时间:2011-07-12 18:10:39

标签: php .htaccess redirect

我目前通过使用mod_rewrite使我的所有页面都在没有.php扩展名的情况下工作。如:

www.mywebsite.com/noextension

但是,如果他们决定将.php扩展名添加到这样的网址,我将如何将用户重定向到404页?

www.mywebsite.com/noextension.php

到目前为止,我的htaccess看起来像这样:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([a-zA-Z0-9]+)(/)?$ $1.php
RewriteRule ^forums/([a-zA-Z0-9]+)(/)?$ forums.php?category=$1 [NC]

我已经尝试了这个RewriteRule \.php$ - [R=404]之类的东西,但是,我去的每一页只有404。我想我可能不得不使用像REQUEST_URI这样的东西去做我想问的事。

你们建议我添加什么?感谢。

1 个答案:

答案 0 :(得分:8)

尝试这些行(放在已经存在的行之上):

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.php - [F,L]

此规则将阻止(403错误)直接访问任何.php文件(但当规则转到下一次迭代时,将通过已经重写的URL路径)。

TBH我不是100%确定它会起作用(这取决于你的Apache配置)......但考虑到你有v2.2.x它应该(它在我的2.2.17上工作正常)。 / p>


<强>更新 对于“它踢我的网站主页没有/索引到404”添加此行之前上述规则:

RewriteRule ^$ /index.php [QSA,L]