Sin*_*ine 3 php .htaccess redirect
我目前通过使用mod_rewrite使我的所有页面都没有.php扩展.如:
www.mywebsite.com/noextension
Run Code Online (Sandbox Code Playgroud)
但是,如果他们决定将.php扩展名添加到这样的网址,我将如何将用户重定向到404页面?
www.mywebsite.com/noextension.php
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的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]
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情RewriteRule \.php$ - [R=404],然而,我去的每一页只有404.我想我可能不得不使用像REQUEST_URI这样的东西去做我要问的事情.
你们建议我添加什么?谢谢.
尝试这些行(放在你已经存在的行之上):
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.php - [F,L]
Run Code Online (Sandbox Code Playgroud)
此规则将阻止(403错误)直接访问任何.php文件(但当规则转到下一次迭代时,将通过已经重写的URL路径).
TBH我不是100%肯定它会起作用(这取决于你的Apache配置)......但考虑到你有v2.2.x它应该(它在我的2.2.17上工作正常).
更新: 对于"它将我的网站主页没有/索引到404" ,在上述规则之前添加此行:
RewriteRule ^$ /index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)