我可以强制 .htaccess 刷新吗?
Posted
技术标签:
【中文标题】我可以强制 .htaccess 刷新吗?【英文标题】:Can I force .htaccess to refresh? 【发布时间】:2012-02-25 22:17:48 【问题描述】:我们正在将一个网站从一个 CMS 转移到另一个。 .htaccess 文件已更改,需要刷新它才能使新站点正常工作。据我了解,只有在清除浏览器缓存时才会刷新 .htaccess 文件?创建站点的人可以清除我们的缓存,但有没有办法让用户的浏览器获取新的 .htaccess 文件,而无需用户主动手动清除缓存?
【问题讨论】:
浏览器不访问 .htaccess 文件。 apache 使用它来确定为请求服务的文件。浏览器根本不使用它。 .htaccess 文件与浏览器缓存无关。别担心 是否有任何信息,如重定向或类似的东西从文件到缓存?为什么访问过该站点的浏览器会像旧的 .htaccess 文件所指示的那样被重定向?只是侥幸? 是的,我认为浏览器可能会缓存网站的重定向响应(但通常不会很长时间)。您应该只在 SEO 中使用 HTTP 302 重定向(临时)而不是 HTTP 301(永久)。或者更好的是,现在使用 301 将所有旧 URL 重定向到新 URL。 谢谢,我也遇到了这个问题,清除浏览器缓存解决了。非常感谢,我快疯了! 【参考方案1】:如果您使用 RewriteRule,只需使用 R 而不是 R=301。出于其他目的,您必须在更改重定向时清除浏览器缓存。
来自https://***.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 中的缓存。设置 > 隐私 > 清除浏览数据。然后你只需要检查“缓存的图像和文件”这不会清除你的登录或任何东西。
【讨论】:
以上是关于我可以强制 .htaccess 刷新吗?的主要内容,如果未能解决你的问题,请参考以下文章
可以使用 .htaccess 和特定的 GET 请求(Dropbox 样式)强制下载吗?
我可以使用 JavaScript 在 iframe 上强制刷新吗?
我可以强制刷新 Databricks Delta 表,以便磁盘副本具有最新/一致的数据吗?