对 .htaccess 的请求应返回 404 而不是 403

Posted

技术标签:

【中文标题】对 .htaccess 的请求应返回 404 而不是 403【英文标题】:Requests to .htaccess should return 404 instead of 403 【发布时间】:2011-12-18 05:59:22 【问题描述】:

这是Is there a way to force apache to return 404 instead of 403? 的后续行动,它建议RedirectMatch 到 404 来完成此操作。

它适用于大多数情况,但是如果我要求:

 http://example.com/.htaccess

如果我的 .htaccess 文件中有(或没有)这个,我得到的是 403 而不是 404:

RedirectMatch 404 ^/\.htaccess$

有没有办法从.htaccess 文件本身覆盖默认的 403 - apache 的禁止行为?

【问题讨论】:

这必须在主 Apache 配置文件或您的 vhost 中完成,其中对 .ht* 文件的访问通过 HTTP 403 返回。您可以在此处简单地更改它而无需重写。 @thephpdeveloper:将其添加为答案而不是评论:) 感谢大家的确认。我只在与.ht* 文件处理有关的httpd.conf 文件上看到过这一特定行,所以不敢确认。 @thephpdeveloper: 不,它有not 要在主 apache 配置文件或 vhost 配置中完成。 对于最接近的投票者:我需要这个用于我的应用程序配置的 URL 布局,我不想重新配置整个服务器,因为它是共享主机(a如果这很重要,可以使用 git)。因此,我只会将其视为 SO 上的任何其他 mod_rewrite 配置问题。 【参考方案1】:

就在我发布我的问题之后,我找到了以下解决方案:

.ht 类型的文件模拟默认服务器配置的<Files> 规则。 允许他们。 将它们重定向到 404。

像这样工作:

<Files ~ "^\.ht">
  Order Deny,Allow
  Allow from all
  Satisfy All
  Redirect 404 /
</Files>

【讨论】:

以上是关于对 .htaccess 的请求应返回 404 而不是 403的主要内容,如果未能解决你的问题,请参考以下文章

通过 htaccess 发送 404 错误?

.htaccess url rewrite在GoDaddy Shared Server上不起作用,返回了Apache 2.4.3 - 404错误

htaccess 命令仅允许来自同一服务器的请求(不指定 IP)

CodeIgniter 使 .htaccess 为 index.php 返回 404

htaccess:尝试 ErrorDocument 时出现 404 Not Found 错误

从 xampp 移动到 apache 2.4.7 后,Laravel 路由返回 404。 mod_rewrite aur htaccess 或缺少 apache 设置?