我目前通过使用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这样的东西去做我想问的事。
你们建议我添加什么?感谢。
答案 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]