代码之家  ›  专栏  ›  技术社区  ›  jay

ModRewrite with HTTPS[关闭]

  •  0
  • jay  · 技术社区  · 14 年前

    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    // It think the problem must be here --^
    
    RewriteCond %{HTTP_HOST} ^rto12\.ca$ [NC]
    RewriteRule ^(.*)$ https://www.rto12.ca/$1 [R=301,L]
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php?
    RewriteRule ^index\.php?$ https://www.rto12.ca/ [R=301,L]
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html?
    RewriteRule ^index\.html?$ https://www.rto12.ca/ [R=301,L]
    

    我的问题来了当你试图去这里: rto12.ca ... 浏览器会将您带到这里:` https://www.rto12.ca/https://rto12.ca/ '

    1 回复  |  直到 11 年前
        1
  •  4
  •   Tim Stone    14 年前

    此规则:

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

    …将把请求重写为 https://rto12.ca/REQUEST_URI ,然后将其传递给下一个规则(下一个规则的输入将被添加到请求的末尾) https://rto12.ca/REQUEST\u URI

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

    有可能将所有规则合并到最多一个重定向中,所以让我来研究一下,看看我能想出什么,然后更新答案。不过,添加这些标志应该可以解决您的问题。

    编辑 :我认为这应该一步到位:

    RewriteEngine On
    
    RewriteCond %{HTTPS}        =off   [OR]
    RewriteCond %{HTTP_HOST}   !^www\. [OR]
    RewriteCond %{THE_REQUEST}  ^[A-Z]{3,9}\ /index\.(html|php)
    RewriteCond %{HTTP_HOST}    ^(www\.)?(.+)$
    RewriteRule ^(index\.(html|php))|(.*)$ https://www.%2/$3 [R=301,L]