.htaccess 文件是否缓存以前的指令?

Does .htaccess file cache previous instructions?

有点奇怪的问题我无法理解。

所以我一直在以一种非常业余的方式摆弄我的 .htaccess 文件。我成功地添加了一个简单的 301 重定向,从一个 URL 到另一个。但是我已经删除了这条指令,重定向仍然发生。

为了混淆问题,我在文件中添加了另一个规则,但它没有被执行。我试过删除文件。这阻止了初始 301 重定向的发生(即使指令不在文件中)。

我重新添加了 .htcaccess 文件并添加了我的新规则,现在可以使用了,但原始的 301 重定向仍在发生。

这真的让我很困惑,如果有人知道这里发生了什么,我们将不胜感激。

我 运行 plesk 12 如果这有什么不同的话。

所以现在我的 .htaccess 文件如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [L,R=301,NC]

但是我的 url /pages/page 仍然 301 重定向到 /page(即使显然那里不再有规则)

调试此类问题的一种方法是为 mod 重写启用日志记录,例如在 httpd.conf 中添加 LogLevel info rewrite:trace5 并拖尾 apache 错误日志以查看 apache 如何处理重写规则。有关日志文件的文档:https://httpd.apache.org/docs/2.4/logs.html,请参阅每个模块的日志记录部分。

请注意网络浏览器正在积极缓存重定向 301。

顺便说一句,如果您只需要简单的重定向 domain.tldwww.domain.tld,在主机设置中有特殊选项 "Preferred domain":