apache - htaccess 阻止在 chrome 中使用全局 SSL 重定向

标签 apache .htaccess ssl redirect

我有一些网站正在添加 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/

相关文章:

php - : blogger. com、tumblr.com 等博客服务是什么?用于制作动态子域

java - Spring LDAP TLS/SSL 异常 : PKIX path building failed: unable to find valid certification path to requested target

java - 在 java 程序中发出 STARTTLS 命令后,startHandshake 出现不支持或无法识别的 ssl 消息异常

perl - Apache下应该选择哪种FastCGI服务器模式?

apache - nginx 中的 $0 是什么? (mod_重写)

javascript - js、css 等的 url 重写问题

php - UTF-8贯穿始终

.htaccess - 将不可用页​​面重定向到 404 而不更改 URL

apache - 如何将一个 WordPress 安装重定向到另一个(两者都在同一域的子目录中)?

ssl - 尝试使用 OpenSSL 1.0.1f 用 AFL-FUZZ 重新创建 Heatbleed