.htaccess重定向403错误文件到404错误文档


.htaccess redirect 403 error files to 404 error document

我有一个名为control的文件夹,它包含在名为project的根项目文件夹中,因此control文件夹在本地主机上的路径形式如下:http://localhost/project/control

control文件夹中,我放置了一个.htaccess文件,其内容为:

RewriteEngine On
deny from all

在项目根文件夹即project文件夹我有另一个.htaccess文件,包含主代码,包括404错误重定向代码:

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^  errordocs/404.php [L]

现在我想做的是,每当打开control文件夹时遇到403错误时,它应该将其重写为相同的errordocs/404.php页面。

您可以使用ErrorDocument匹配statuscode和输出页面

ErrorDocument 404 errordocs/404.php
ErrorDocument 403 errordocs/404.php

我能够解决我的问题,我试图在这里解释它,所以它可能对其他人也有帮助,它对我来说工作得很好。

在我的project/control/.htaccess文件,我把代码:

RewriteEngine On
RewriteRule ^$   ../errordocs/404.php [L] 

因此,每当用户键入url localhost/project/control/时,他将从errordocs文件夹中看到自定义404.php文件,这是一个目录,因为我的目的是防止直接访问控制文件夹。我没有使用deny from all而不是使用上面的过程,这样我就可以为403错误使用自定义错误页面,这将独立于文档根路径。现在我的项目文件夹可以被命名为任何用户想要的名字。

注意:这个过程将返回200而不是实际的403错误。要返回403和404,分别使用下面的代码:

403年

RewriteEngine On
RewriteRule ^$  ../errordocs/404.php [L]
RewriteRule ^$ - [R=403,NC,L]
404年

RewriteEngine On
RewriteRule ^$  ../errordocs/404.php [L]
RewriteRule ^$ - [R=404,NC,L]

重定向403到404

ErrorDocument 403 /yourfoldererror/404.php

在404.php中添加如下php代码:

<?php http_response_code(404);?><!DOCTYPE html><html ....
使用该代码,响应不是403,而是404