微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP-Mod_Rewrite扩展删除功能更改404的功能

当我尝试使用Apache服务器上的.htaccess文件从所有文件删除PHP扩展名时,一切正常.扩展被删除,一切看起来都好多了.

但是,我有一个小问题:通常我进入诸如./nonexistent.PHP之类的页面时,会出现404错误.但是,当我重写URL并转到./不存在时,却收到500 Internal Server Error.

理想情况下,我只想将用户重定向自定义的“找不到页面页面,但是目前无法找到一种方法.

这是我正在使用的代码

Options -MultiViews

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$$1.PHP

我尝试设置:ErrorDocument 500 / nope,但是,这似乎也没有效果.

因此,总而言之,有谁知道如何重写扩展名,同时保持认状态下“未找到页面”系统的相同功能

解决方法:

当使用上述重写条件请求不存在的文件时,您将遇到无限重定向.

如果访问http://yoursite.com/i-dont-exist,则第一个条件为true,i-dont-exist是不存在的文件,因此它将尝试重写为i-dont-exist.PHP,也不存在,因此重写模式会一直持续到Apache限制递归并给您500错误(本质上,它会不断地重写为i-dont-exist.PHP.PHP.PHP.PHP.PHPPHP,直到您遇到500错误.

您可以通过添加其他检查来解决此问题,以确保在重写之前存在扩展名为.PHP文件.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.PHP -f  #make sure $1.PHP exists before rewriting
RewriteRule ^(.*)$$1.PHP

如果file.PHP存在,它将被重写,否则不会被重写,并且将显示404错误页面.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐