2

当我转到http://example.com/not-here时,我得到一个内部服务器错误而不是 404,这是我的 htaccess 文件(它删除了扩展名,因此 abc.php 可以作为 example.com/abc 访问,而不是example.com/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

它非常简单,但我看不到它,任何帮助都可以得到

4

3 回答 3

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
于 2011-06-01T16:12:42.253 回答
1

当我遇到这种情况时,我所做的是注释掉行。注释掉重写部分,看看是否有效。要注释掉代码,只需将 # 作为第一个字符。这一切都是为了将​​代码缩小到罪魁祸首。

于 2011-06-01T13:53:26.733 回答
0

internal server error是由您的 RewriteRule 的无限循环引起的。

只需将您的 RewriteRule 更改为:

RewriteRule ^(.+)(?<!\.php)$ /$1.php [L,NC]

Negative lookbehind (?<!\.php)将防止多个内部重定向

于 2011-06-01T16:32:20.240 回答