这里已经发布了几个关于在特殊情况下返回 404 而不是 403 的问题(例如,.ht* 文件或某个目录),但我不知道如何简单地替换所有403 响应(“好的,它存在,但您仍然必须找到一种方法进入“)与 404(“抱歉,从未听说过”)。我希望有一个简单的解决方案,不需要更新 .htaccess 的正则表达式或其他位以匹配站点更改,只需一个简单的指令:“每当您决定返回 403 时,就返回 404”适用到整个站点,无论配置更改如何。
然后,如果顶级 .htaccess 包含“Options -Indexes”,并且任何给定目录不包含 index.html(或等效),那么裸目录 URL 将返回 404,但如果我将 index.html 添加到该目录,相同的裸目录 URL 将返回 index.html,无需对任何 .htaccess 文件进行更新。
我什至不在乎,如果我曾经为目录输入密码,错误的密码是否会返回 404(因为 404 -> 403 映射)。在这种情况下,我不会通过返回 404 来隐藏任何内容,但这也不会造成任何伤害。但是,如果有一种方法可以撤消针对特殊情况的一般 403->404 映射(而不是针对特殊情况执行此操作),那可能会更有用。
当然,如果我忽略了什么,请让我直截了当。
编辑:德拉特。我试图在这里写一个高质量的问题,但我在第二段中对“Options -Indexes”行为的描述结果是错误的。没有该行,如果目录中存在裸目录 URL,则会显示“index.html”;否则,它会显示目录的内容。(如果 index.html 存在,则 /dir 到 /dir/index.html 的转发是 Web 主机的默认设置,除非我弄错了。)添加“Options -Indexes”行会阻止它在公共场合晾晒我的衣服(返回 403,而不是 404,但仍然比公开目录内容更好),但现在即使 index.html 存在,裸目录 URL 也会返回 403。
我希望裸目录 URL“mysite.com/mydir”如果存在则显示 /mydir/index.html,如果不存在则显示“404”,但显然它不仅仅是用 404 替换 403。