【问题标题】:Redirect Loop ONLY in safari using htaccess when trying to redirect http to https尝试将 http 重定向到 https 时,仅在 safari 中使用 htaccess 重定向循环
【发布时间】:2016-01-09 22:03:01
【问题描述】:

我不知道为什么会这样,但是当我从 safari 以外的任何其他浏览器访问我的网站时,它会将我重定向到 https 版本。但是,如果我使用 safari(在 iPhone、mac 或 iPad 上)访问同一站点,它会显示存在重定向循环。

我的 htaccess 代码:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#RewriteCond %{HTTPS} off
#RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

Options -Indexes


</IfModule>

我不知道为什么会这样。非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    我改用这个来修复它。

    RewriteCond %{SERVER_PORT}  !^443$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    【讨论】:

    • 知道为什么RewriteCond %{HTTPS} off 没有完成这项工作吗?看到相同但仅在 MacBook 上,而不是在 i-Devices 上,一旦我通过我的 Windows 机器 [Fiddler] 代理流量,问题就消失了。还没有时间用本地 Apache 尝试它,我可以调试它。
    【解决方案2】:

    试试:

    <IfModule mod_rewrite.c>
    
     RewriteEngine On
     RewriteCond %{HTTP_HOST} ^(www\.)?example.com [NC]
    
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    
    RewriteCond %{REQUEST_URI} !^/public
    RewriteRule ^(.*)$ public/$1 [L]
    
    Options -Indexes
    
    
    </IfModule>
    

    example.com 替换为您的 HTTP_HOST 字符串模式的域名。

    【讨论】:

    • 清除浏览器缓存。
    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2014-10-08
    • 1970-01-01
    • 2016-05-29
    • 2019-03-18
    • 2012-10-11
    相关资源
    最近更新 更多