即使我删除了 htaccess,服务器也会记住旧的重写规则

即使我删除了 htaccess,服务器也会记住旧的重写规则

我已经使用 Ubuntu 和 LAMP 设置了一个开发服务器,但由于某种原因,它的.htaccess行为很奇怪......

那里有一个网站,上面有一套规则,当我注释掉它们时,它们仍然有效,即使我将文件重命名为.htaccesss它,它仍然有效!如果我删除文件中的所有内容,它仍然有效,每次我进行更改时都要重新启动 Apache...

我尝试重新安装 Apache 并重新安装重写模块,但仍然不起作用......

我添加的任何新规则似乎都没有任何影响,所以它似乎是从其他地方读取规则。

如果我在文件中放置 / 导致语法错误,.htaccess我就会收到 500 服务器错误。

有没有地方有缓存规则?我以前从来没有遇到过这个问题!

编辑:我通过Options -Multiviews在我的.htaccess文件中添加解决了这个问题

答案1

可能需要检查一下缓存是否发生在客户端而不是服务器端。Firefox 会缓存任何 301(永久移动)重定向几天。使用 302(临时)重定向。要修复“旧目标”,您可以设置一个重定向到另一个域(例如没有 www)的 html 页面等,以防止 Firefox 使用其缓存。

答案2

有没有地方有缓存规则?我以前从来没有遇到过这个问题!

(通常)不是服务器端,而是客户端/浏览器端;尝试清理浏览器的缓存


编辑1

建议:从您的文档根目录中移出 .htaccess 文件。当重写规则仍然处于活动状态时,它们必须位于某个地方:在您的文档根目录中或<virtualserver>配置中。要为您的文档根目录禁用 htaccess,请将以下内容添加到您的服务器配置中:

<virtualHost>
    ...
    DocumentRoot /some/path
    ...

    <Directory /some/path>

        AllowOverride None

    </Directory>

</VirtualHost>  
  • 重启 Apache

如果你确定你的服务器配置中没有任何重写规则,并且上面的代码片段仍然可以重写,那么我觉得有问题

答案3

  1. 打开浏览器检查器。(CTRL + SHIFT + I)。

  2. 切换到网络选项卡

  3. 选中禁用缓存复选框并刷新网站。

答案4

这可能无法帮助到所有人,但就我而言,我发现我网站的父目录中有一个旧的 .htaccess 副本,实际上比我的 apache htdocs 文件夹高出几个目录,似乎 apache 会遍历目录树,必须将此副本与我的 htdocs 文件夹中的 .htaccess 合并。一旦我发现这个错误的文件并将其删除,就不会消失的重定向就会停止重定向。

相关内容