【问题标题】:Can I force .htaccess to refresh?我可以强制 .htaccess 刷新吗?
【发布时间】:2012-02-25 22:17:48
【问题描述】:

我们正在将一个网站从一个 CMS 转移到另一个。 .htaccess 文件已更改,需要刷新它才能使新站点正常工作。据我了解,只有在清除浏览器缓存时才会刷新 .htaccess 文件?创建站点的人可以清除我们的缓存,但有没有办法让用户的浏览器获取新的 .htaccess 文件,而无需用户主动手动清除缓存?

【问题讨论】:

  • 浏览器不访问 .htaccess 文件。 apache 使用它来确定为请求服务的文件。浏览器根本不使用它。
  • .htaccess 文件与浏览器缓存无关。别担心
  • 是否有任何信息,如重定向或类似的东西从文件到缓存?为什么访问过该站点的浏览器会像旧的 .htaccess 文件所指示的那样被重定向?只是侥幸?
  • 是的,我认为浏览器可能会缓存网站的重定向响应(但通常不会很长时间)。您应该只在 SEO 中使用 HTTP 302 重定向(临时)而不是 HTTP 301(永久)。或者更好的是,现在使用 301 将所有旧 URL 重定向到新 URL。
  • 谢谢,我也遇到了这个问题,清除浏览器缓存解决了。非常感谢,我快疯了!

标签: .htaccess caching browser-cache cache-control


【解决方案1】:

如果您使用 RewriteRule,只需使用 R 而不是 R=301。出于其他目的,您必须在更改重定向时清除浏览器缓存。

来自https://stackoverflow.com/a/7749784/1066234

【讨论】:

    【解决方案2】:

    您替换 .htaccess 文件后,某些服务器会立即重新加载。

    如果是这样,它会立即用于所有后续请求。您不需要刷新任何缓存。

    有些服务器只定期检查 htaccess。

    【讨论】:

    • .htaccess 由 apache 对每个请求进行检查(对于每个请求,它会检查 DocumentRoot 的所有子目录中的 htaccess,而不仅仅是当前目录)
    • 绝对不是这样。有些服务器只定期检查 .htaccess 文件。
    • @SColvin,知道如何强制服务器加载更新的 .htaccess 吗?
    • 我去掉了http到https的重定向代码,但是还是重定向到https,怎么办?
    【解决方案3】:

    我的 .htaccess 文件中有一个重写器,例如,

     RewriteCond %{HTTPS} !on
     RewriteRule (.*) https://example.com%{REQUEST_URI} [L,R=301] 
    

    一旦我在 localhost 中打开该网站,它就再也没有机会硬刷新页面了。

    解决方案:我添加了一个随机字符串,例如 localhost/mywebsite/index.php?1234

    【讨论】:

      【解决方案4】:

      如果您已经有一个 R=301 重定向,那么您只是在 htaccess 中更改了重定向到的位置,但它没有为您更新,那么它可能已缓存在您的浏览器中。您无法在该页面上进行硬刷新,因为它会重定向。您可以在其他浏览器中尝试,如果它在那里工作,您只需要清除 Chrome 中的缓存。设置 > 隐私 > 清除浏览数据。然后你只需要检查“缓存的图像和文件”这不会清除你的登录或任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-17
        • 2012-11-08
        • 2011-07-09
        • 2013-10-24
        • 2016-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多