【问题标题】:mod_rewrite SSL with other Rules Activemod_rewrite SSL 与其他规则活动
【发布时间】:2012-12-05 23:32:36
【问题描述】:

在遵守其他规则的同时,我的 mod_rewrite 到 SSL 存在问题。我需要所有页面都在 SSL 上,但是通过添加规则会创建一个重定向循环。

这是我目前所拥有的:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) https://www.domain.com/ [R=301]

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

RewriteBase /

# Sign up
RewriteRule ^sign-up/$ /register.php [NC]

我可能在哪里出错了?我试过改变规则的顺序,但没有成功。

干杯, RJ

【问题讨论】:

    标签: .htaccess mod-rewrite ssl


    【解决方案1】:

    您需要使用[L] 标志退出重写迭代:

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule (.*) https://www.domain.com/ [R=301,L]
    
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    RewriteBase /
    
    # Sign up
    RewriteRule ^sign-up/$ /register.php [NC]
    

    【讨论】:

    • 谢谢,很好的答案。可惜没解决,还是有循环。
    【解决方案2】:

    我想通了。事实证明这是由于 Web 服务器位于负载平衡器后面。

    因此,它需要一段时间才能找到,但如果其他人在负载均衡器后面的多台服务器上遇到类似问题,这就是您需要的:

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

    谢谢,RJ

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多