Apache - 如何在调试htaccess时禁用浏览器缓存

ham*_*boy 22 apache .htaccess firefox caching

我正在尝试调试.htaccess文件.FireFox保持缓存重定向,我无法绕过它们.通常我会按Ctrl + F5,但因为它已经将我重定向到另一个页面,只刷新我发送的页面而不是我输入的URL.有没有办法强制刷新网址?

这是一个例子:

  • 重定向example.com/hi到example.com/hello,在FireFox中测试它可以工作
  • 从.htaccess中删除此行
  • 在FireFox中输入example.com/hi,它仍然会重定向到example.com/hello
  • 在Chrome中键入example.com/hi,它不会重定向

这就是为什么我认为这是一个浏览器缓存问题,而不是服务器缓存.

编辑:这似乎是FireFox特有的,快速解决方案是使用Chrome代替.缓存在一小时后过期,这在尝试调试时太长了.

Dan*_*sco 14

如果您使用的是RewriteRule,只需使用R而不是R = 301.出于其他目的,您必须在更改重定向时清除浏览器缓存.(如果你不知道如何清除你的浏览器缓存,谷歌搜索方法应该提供一个快速简单的答案 - 或者随意评论,我会帮助你.)

简而言之,尽可能避免使用301,直到您的重定向正常工作为止.如果您无法避免它们,请准备好定期清除浏览器缓存.

  • "谷歌它"不是一个答案:[我用谷歌搜索它,我在这里. (7认同)
  • 浏览器不会缓存.htaccess文件(因为它们从未看到它们),但它们会缓存重定向.绝对没有理由正确的302重定向不能按预期工作,除非这实际上是一个Firefox错误(在这种情况下你应该用它们提交一张票). (2认同)
  • 想出来为Chrome浏览器,请参阅下面的答案. (2认同)

Lod*_*ode 10

清除Firefox的网络缓存对我有用.也适用于301重定向.

首选项/选项>高级>网络>缓存的Web内容.

在Firefox首选项中清除网络缓存

请参阅https://support.mozilla.org/en-US/kb/how-clear-firefox-cache


Vau*_*lor 7

我认为值得权衡一下,以防我的经验对任何人有所帮助。我经常在本地机器上的开发和生产分支之间来回切换。开发分支是我的本地环境,生产分支是我的远程服务器。两种环境之间的唯一区别是 .htaccess 文件。我的远程服务器需要重写规则,以防有人没有在 URL 前输入“www”:

# If www is missing from the beginning of the URL
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

但是,由于 URL 结构,此重写规则不适用于我的本地环境。所以在我的本地版本的 .htaccess 中,我注释掉了重写规则。

我注意到 Chrome 似乎并没有每次都去我的本地服务器获取最新的 .htaccess 文件。这显然是缓存重写,因为当我从我的生产分支切换到我的开发分支时,我得到如下所示的内容:

www.www-local.myurl.local
Run Code Online (Sandbox Code Playgroud)

如果我使用 Safari,我会得到正确的 URL:

www-local.myurl.local
Run Code Online (Sandbox Code Playgroud)

为了解决这个 Chrome 问题,我转到了开发者工具 > 设置 > 常规 > 并选中“禁用缓存(DevTools 打开时)”

选中此项后,我只需要打开 Dev Tools 并重新加载即可获取当前的 .htaccess。


And*_*rew 6

要在Google Chrome中强制清除htaccess /重定向缓存:

  1. 转到设置>高级>隐私>清除浏览数据
  2. 选择“缓存的图像和文件”
  3. 单击清除浏览数据

现在,您的页面应加载新的htaccess设置。

  • 为此有一个简单的链接:chrome:// settings / clearBrowserData (3认同)

Dr *_*eco 5

在Google Chrome中,使用以下方式在"隐身"模式下打开新标签:

CTRL-SHIFT-N

对调试非常有用.