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

b4qexyjb  于 2022-11-16  发布在  Apache
关注(0)|答案(3)|浏览(212)

我有一个名为control的文件夹,它包含在名为project的根项目文件夹中,因此对于control文件夹,localhost上的路径格式如下: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]

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

h6my8fg2

h6my8fg21#

您可以使用ErrorDocument将状态代码与输出页面匹配

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

vbkedwbf2#

我能够解决我的问题,我试图在这里解释它,这样它可能会对其他人也有帮助,它对我来说工作得很好。
在我的project/control/.htaccess文件中,我把代码:

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

因此,每当用户输入url localhost/project/control/,他就会看到自定义的404.php文件从errordocs文件夹,这是一个目录回来,因为我的目的是防止直接访问控制文件夹.我没有使用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]
xuo3flqw

xuo3flqw3#

在htaccess中将403重定向到404

ErrorDocument 403 /yourfoldererror/404.php

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

<?php http_response_code(404);?><!DOCTYPE html><html ....

使用该代码,响应将不是403,而是404

相关问题