-2

我目前正在尝试配置我的服务器,以便任何丢失的页面都会在 404 自定义页面上优雅地出错。不幸的是,一切似乎都出现了 500 内部服务器错误。

我的服务器中的站点设置(不使用 .htaccess)是:

AllowOverride All

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

如果我输入 domain.com/missingpage - 我得到的只是 500 错误。非常感谢这里的指导。谢谢

4

1 回答 1

1

假设您正在访问/misssing-page您的服务器。它不是文件也不是目录,因此它被重写为/misssing-page.php. 它现在看起来更像一个文件,但在服务器上仍然不存在,所以对于 apache 它既不是文件也不是目录,它再次被重写为/misssing-page.php.php. 正如您的日志所说,这会持续 10 次,并导致内部服务器错误。

所以你错过了一个条件,比如:

RewriteCond %{REQUEST_URI} !.php$

.php因此,仅当请求的 uri 末尾存在时才会发生重写

于 2013-05-08T22:49:41.777 回答