当我尝试使用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.PHP … PHP,直到您遇到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 举报,一经查实,本站将立刻删除。