我有一些网站正在添加 SSL 以实现最新的合规性,这些网站具有 protected 管理文件夹、全局根重定向
#redirect 到 ssl 站点
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
导致访问者使用旧的 http: 管理员链接到达 404 页面,因为重定向发生得早。
我通过在全局之前添加一个停止规则为 firefox 修复了这个问题
# stop processing for admin
RewriteRule ^(admin)($|/) - [L]
和一个特定的重定向
RewriteCond %{HTTPS} off
RewriteRule ^admin/(.*)$ https://www.mysite.co.uk/admin/$1?%{QUERY_STRING} [NE,r=301,L]
但是在 chrome 中,目录停止失败并且特定的重定向被忽略,因此 chrome 访问者得到 404 而不是被重定向。
我尝试了多次添加到全局但没有工作 #redirect 到 ssl 站点
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^admin(.*) [NC]
RewriteCond %{REQUEST_URI} !(.*)admin(.*) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/].*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
为什么 firefox 和 chrome 的行为不同,我以为是 apache 在做处理,我如何让 chrome 的行为像 firefox 一样?
最佳答案
我怀疑 Firefox 的行为与 Chrome 不同。更有可能是 Chrome 中存在缓存重定向,导致它直接访问以前的重定向目标而不访问原始 URL。如果使用 301 重定向而不是 302 重定向,就会发生这种情况,因为 301 意味着永久重定向,浏览器会记住这个重定向。
要摆脱这个问题,您需要清除浏览器缓存,以便它不再记住和使用不再有效的重定向。
关于apache - htaccess 阻止在 chrome 中使用全局 SSL 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522357/