【问题标题】:.htaccess : http to https redirection does not work.htaccess :http 到 https 的重定向不起作用
【发布时间】:2016-04-12 21:46:15
【问题描述】:

我的 .htaccess 和 https 重定向有问题。

首先,我查阅了这些链接以找到解决方案,但没有一个可以帮助我。

链接列表:

当我使用 http 加载页面时,.htaccess 将我重定向到 https,但是当我使用 https 加载页面时,我有一个无限循环。

这是我的 .htaccess 代码:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} ^(api|www|dev|stefano|sav)\.
RewriteCond %{REQUEST_URI} !^/(api|www|dev|stefano|sav)/
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^(.*)$ %1/$1 [L]

有人可以帮我创建一个重定向条件(http 到 https)吗?

【问题讨论】:

标签: .htaccess http mod-rewrite redirect https


【解决方案1】:

几个小时以来,我一直在与同样的问题作斗争。看来我需要负载均衡器背后的系统解决方案。这可能是因为我在我的网站上使用 Cloudflare。

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

将上述行添加到我的 .htaccess 文件后,我删除了 Cloudflare 上的缓存,并且网站按应有的方式加载。

【讨论】:

    【解决方案2】:

    你要离开 Rewrite Flags 你需要告诉它强制重定向 R 标志和可选的提供状态码,推荐 301、302 等。

    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    顺便说一句,您链接到的每个示例都使用R flag 显示答案,不确定您为什么不使用确切的示例:)

    如果落后于负载平衡器等设备的解决方案。

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 它不适用于标志。我有一个错误(错误 500)
    • 那么还有一个问题。你应该使用标志。对于 500 错误,您的 apache 错误日志说明了什么?
    • 确保没有旧的缓存。尝试带有标志的规则,但清除浏览器缓存并再次测试或在另一个浏览器中尝试。
    • 好的,完美。您很可能必须在负载均衡器后面。很高兴你成功了。
    • 感谢您的回答;)
    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 2023-03-03
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多