.htaccess 重写未正确处理错误页面



我有一个静态网站构建,使用分布在一个小目录结构周围的.php文件。

我使用以下重写来公开我的页面,而无需.php扩展名:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

这有效,但是当我请求不存在的页面时,服务器返回 500 错误而不是 404。 我不明白为什么。

我想将丢失页面的请求发送到文档根目录中名为 404.php 并仅显示为"404"的文件,但要做到这一点,我首先需要服务器正确返回 404 错误,而不是 500。

这是因为您正在重写网站上不存在的所有内容以$1.php

在重写请求之前,您需要检查 uri 是否以 php 文件的形式存在.

尝试

RewriteEngine on 
#if the uri.php exists
RewriteCond %{REQUEST_FILENAME}.php -f
# rewrite the uri
RewriteRule ^(.+)/?$ $1.php [L]

最新更新