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

时间:2015-06-08 13:04:49

标签: php apache .htaccess mod-rewrite redirect

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用ErrorDocument

将状态代码与输出页面进行匹配
ErrorDocument 404 errordocs/404.php
ErrorDocument 403 errordocs/404.php

答案 1 :(得分:1)

我能够解决我的问题,我想在这里解释一下,这样对其他人也有帮助,它对我来说很好。

在我的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]