.htaccess 使用htaccess将url以.php结尾的页面重定向到自定义404页面导致自定义404页面代理

6yjfywim  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(98)
RewriteEngine On
ErrorDocument 404 /exception/404.php
//if url ends with .php/ , show custom 404 page
RewriteRule .php/$ - [R=404,L]
//this line caused the custom 404 page broken
RewriteRule .php$ - [R=404,L]

在我添加第4行之前:wwwspeedcubing.top/index.php
(show索引页)
speedcubing.top/index.php/
(show客户404页面)
在我添加了第4行之后:请speedcubing.top/index.phpspeedcubing.top/index.php/
它们都显示:
未找到
服务器上没有找到请求的URL。
此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

7xllpg7q

7xllpg7q1#

ErrorDocument指令和RewriteRule指令来自于不同的Apache模块,它们在不同的时间运行。因此,设置R=404不会导致Apache调用ErrorDocument处理程序,它最终会显示默认的404 Apache处理程序。
您应该在/exception/404.php中添加以下行来设置自定义http响应代码:

<?php
http_response_code(404);
// rest of the code
?>

并让您的.htaccess代码如下所示:

ErrorDocument 404 /exception/404.php

RewriteEngine On

# if url ends with .php or .php/, show custom 404 page
RewriteCond %{REQUEST_URI} !^/exception/404\.php$ [NC]
RewriteRule \.php/?$ exception/404.php [NC,L]

相关问题