2013-05-08 63 views
-2

我目前正在尝试配置我的服务器,以便任何缺失的页面在404自定义页面上优雅地出错。不幸的是,一切似乎都是500内部服务器错误。 (不使用.htaccess)是否在我的服务器Apache 500错误配置

我的站点设置为:

AllowOverride All 

RewriteEngine On 
ErrorDocument 404 /404.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ $1.php [L] 

如果我键入domain.com/missingpage - 我得到的是一个500错误。真的很感谢这里的指导。谢谢

+0

每500错误的结束伴随着在一条线上发生重写错误日志解释了错误。错误日志说什么? – Charles 2013-05-08 21:59:47

+0

@Charles“由于可能的配置错误,请求超过了10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'来增加限制,使用'LogLevel debug'来获得回溯。 - 它似乎是循环的,而不是在10时优雅地失败,它正在死亡和错误。 – 30secondstosam 2013-05-08 22:03:51

+0

如果注释掉ErrorDocument指令,它会工作吗?如果你直接访问404.php,你会得到正确的结果吗?如果您访问存在的其他PHP脚本,会发生什么情况? – Charles 2013-05-08 22:39:12

回答

1

Asume你正在访问/misssing-page在您的服务器上。它不是一个文件,也不是一个目录,所以它被重写为/misssing-page.php。它现在看起来更像是一个文件,但仍然不存在于服务器上,所以对于apache,它仍然不是文件或目录,并且它正在被重写为​​。这会在您的日志中说明10次,并导致内部服务器错误。

所以你缺少一个条件,是这样的:

RewriteCond %{REQUEST_URI} !.php$ 

所以只会在有.php在请求的URI

+0

绝对完美的结果!非常感谢 – 30secondstosam 2013-05-09 11:27:50