有没有办法迫使阿帕奇返回404,而不是403?(Is there a way to force ap

2019-07-19 20:36发布

有没有一种方法我怎么可以配置Apache Web服务器返回一个404(未找到)错误代码,而不是403(禁止),为此,我希望禁止一些特定的目录来进行访问?

我找到了一些解决方案,这表明使用mod_rewrite的,例如像

RewriteEngine On
RewriteRule ^.*$ /404 [L]

由于发送404,而不是403的目的是为了混淆的目录结构,该解决方案是太暴露,因为它重定向到一些不同的位置,这使得它明显最初访问的目录实际上确实存在。

Answer 1:

RedirectMatch在如

RedirectMatch 404 ".*\/\..*"

是卓有成效的,它禁止访问点开头的所有文件或目录,给人一种“404 Not Found”错误。

从Apache手册:“在重定向[赛事]指令通过询问客户端重新获取在新位置的资源映射旧网址进入一个新的。” 默认情况下, 重定向发送302返回码,但它也可以返回其他状态码,如上所示。



Answer 2:

你可以是这样的:

的.htaccess

的ErrorDocument 403 /error/404.php

404.php

<?php
$status = $_SERVER['REDIRECT_STATUS'] = 404;
header( $_SERVER['SERVER_PROTOCOL'] . ' ' . $status);
?>

404 Error


Answer 3:

有同样的问题后,我结束了以下.htaccess文件

Options -Indexes
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain.com [NC]
RewriteRule ^(.*)/$ - [R=404,NC]

第1和第3行确保您不能列出文件夹的内容,如果你这样做,你会收到一个404错误。 该的RewriteCond指令可确保该重写规则只适用于主域名。 因为我有几个子域,没有的RewriteCond,访问www.mydomain.com/subdomain也返回404,这是不是我的本意。



Answer 4:

要改变这一切403400个误差为404错误,把这个在/etc/apache2/conf.d/localized-error-pages结束或进入的.htaccess

# Will raise a 404 error, because the file <fake_file_for_apache_404.php> doesn't exist.
# We change 403 or 400 to 404 !
ErrorDocument 400 /fake_file_for_apache_404.php
ErrorDocument 403 /fake_file_for_apache_404.php
# We need to rewrite 404 error, else we will have "fake_file_for_apache_404.php not found"
ErrorDocument 404 "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL <script type=\"text/javascript\">document.write(document.location.pathname);</script> was not found on this server.</p></body></html>"
ErrorDocument 500 "Server in update. Please comme back later."


文章来源: Is there a way to force apache to return 404 instead of 403?