【问题标题】:.htaccess; browser caches the error redirect.htaccess;浏览器缓存错误重定向
【发布时间】:2014-01-09 13:21:07
【问题描述】:

对于我们的开发服务器,我有一个界面,人们可以将他们的 IP 临时添加到允许的 IP 列表中。如果有人尝试从不在列表中的 IP 访问 url,则会将其重定向到 IP 添加接口。但是一旦添加了 IP,原来请求的 url 仍然会重定向到接口(浏览器缓存了重定向,这让我们的客户感到困惑)。

重定向是通过指定一个 ErrorDocument 来完成的。我可以强制取消缓存吗?

我在根目录中的 .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(!www\.)?(.+)
RewriteCond %{HTTP_HOST} ^(.*)\.SITENAME\.com
RewriteRule ^(.*)$ http://SITENAME.com/%1/$1 [L,P,NC,QSA]

#####

ErrorDocument 403 http://xs.SITENAME.com

order deny,allow
deny from all

allow from 12.345.678.90 #1389452253
allow from 12.345.678.91 #1389461806
allow from 12.345.678.92 #1389486472
allow from 12.345.678.93 #1389550179
allow from 12.345.678.94 #1389618643

编辑:接受的答案似乎首先有效,但在某些情况下由于某种原因它没有。最好的解决方案是在每次有人被重定向到错误页面时更改 .htaccess。 (打开.htaccess,将注释行更改为#random_string(例如unix time))这使得浏览器重新检查.htaccess

【问题讨论】:

    标签: .htaccess browser-cache errordocument


    【解决方案1】:

    您可以尝试使用这些规则,但不幸的是,如果浏览器决定缓存请求,我们无法强制不这样做。

    FileETag None
    <IfModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
    

    您还可以将这些规则包装在 &lt;FilesMatch&gt;&lt;Files&gt; 中以仅针对一个或几个 URL:

        <FilesMatch "\.(htm|html)$">
            # The rules from above
        </FilesMatch>
    
        <Files index.php>
            # The rules from above
        </Files>
    

    【讨论】:

    • 它似乎适用于我们的大多数浏览器,谢谢!虽然在每个页面加载时强制重新加载是一种耻辱......我想我会有条件地添加这个取消缓存。只有当某人刚刚添加了他们的 IP 时,这个 uncache 才会在 htaccess 中停留几分钟然后消失
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2011-12-29
    • 2017-08-07
    • 2010-12-18
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多