当我转到http://example.com/not-here时,我收到内部服务器错误而不是404,这是我的htaccess文件(它删除了扩展名,因此可以通过example.com/abc而不是example.com访问abc.php /abc.php):
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /$1.php [L,QSA]
DirectoryIndex login.php index.php
ErrorDocument 403 /error.php?type=403
ErrorDocument 404 /error.php?type=404
ErrorDocument 500 /error.php?type=500
其简洁的东西非常简单,但我看不到它,任何帮助都是适当的
答案 0 :(得分:3)
我应该在.htaccess中有以下内容:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !rewrited
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /$1.php?rewrited=1 [L,QSA]
DirectoryIndex login.php index.php
ErrorDocument 403 /error.php?type=403
ErrorDocument 404 /error.php?type=404
ErrorDocument 500 /error.php?type=500
答案 1 :(得分:1)
当我遇到这个时,我所做的就是注释掉。注释掉重写部分,看看是否有效。要注释掉代码,只需将#作为第一个字符。这就是将代码缩小到罪魁祸首。
答案 2 :(得分:0)
internal server error
是由RewriteRule的无限循环引起的。
只需将您的RewriteRule更改为:
RewriteRule ^(.+)(?<!\.php)$ /$1.php [L,NC]
Negative lookbehind (?<!\.php)
会阻止多个内部重定向。