尝试使用ErrorDocument处理请求时出现500内部服务器错误

时间:2013-12-23 22:29:42

标签: php regex apache .htaccess mod-rewrite

我有这个.htaccess文件:

Options -Indexes
RewriteEngine on

ErrorDocument 404 /404.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]*)/?(.*)$ ./$1.php

RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)$ - [L,R=404]

但是,当我转到localhost/example.php时,它会返回500内部服务器错误。

请帮忙吗?感谢。

修改

出现的完整错误消息是:

Not Found

The requested URL /example.php was not found on this server.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

4 个答案:

答案 0 :(得分:5)

由于循环错误,您最有可能获得500分。

从上一条规则中排除404.php

ErrorDocument 404 /404.php

Options -Indexes -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} \.php [NC]
RewriteRule ^(?!404\.php)$ - [L,NC,R=404]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?(.*)$ ./$1.php [L]

答案 1 :(得分:3)

实际上是在文件系统的根目录中设置了404.php吗?

我猜不是。

尝试类似../ 404.php

的内容 BTW:你看过你的apache日志文件了吗?

答案 2 :(得分:0)

由于您要在页面中隐藏.php扩展名,请尝试通过执行以下操作从.htaccess文件中删除该扩展名:

更改:ErrorDocument 404 /404.php到ErrorDocument 404/404

希望这有帮助。

JJ

答案 3 :(得分:-1)

您只需在.htaccess文件中添加此代码

# BEGING WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress