【问题标题】:Redirect all http AND https non-www URLS to https://www.xyz.com via htaccess通过 htaccess 将所有 http 和 https 非 www URL 重定向到 https://www.xyz.com
【发布时间】:2013-07-12 09:28:44
【问题描述】:

由于太长和太复杂而无法进入(它涉及多层公司繁文缛节,导致其他人没有购买我请求的通配符 SSL 证书),我必须设置一个域以将所有请求重定向到 @987654321 @ – 带有www 子域的安全协议。

所以:http://xyz.comhttp://www.xyz.comhttps://xyz.com 应该都重定向到 https://www.xyz.com

我的 .htaccess-fu 充其量是很弱的,我似乎无法让它工作。注意:如果有影响的话,托管在 Media Temple 上。

到目前为止,我的 .htaccess 文件如下所示:

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.xyz.com/$1 [R,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

http://xyz.comhttp://www.xyz.com 都重定向到 https://www.xyz.com,所以是的。但是,https://xyz.com没有重定向到https://www.xyz.com,因此会抛出一个安全警告页面:

这可能不是您要查找的网站!
您试图访问 xyz.com,但实际上您访问了一个标识为 www.xyz.com 的服务器。这可能是由于服务器上的错误配置或更严重的原因造成的。您网络上的攻击者可能正试图让您访问 xyz.com 的虚假(并且可能有害)版本。
您不应该继续,特别是如果您以前从未见过此站点的此警告。

任何帮助我度过这最后一个难关的帮助将不胜感激!

【问题讨论】:

    标签: .htaccess http redirect https


    【解决方案1】:

    我真的不明白 @scottie 链接说不可能是公认的答案。

    我在我的 3 个网站上使用以下代码,provided here by Erik 并且它成功地使 http://example.com, http://www.example.com, https://example.com 全部登陆https://www.example.com

    RewriteEngine On
    # ensure www.
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    # ensure https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    P.S:我必须#RewriteEngine On,因为我的.htaccess开头已经有RewriteEngine On

    我希望这也能帮助像我这样可能认为这是一个非常漫长的过程的人,如果有任何我不知道的缺点,请告诉我。

    【讨论】:

      【解决方案2】:

      尽管这个问题已经很老了。

      如果发现它在谷歌上搜索完全相同的问题。在此处提供的代码没有帮助之后。我试过了。

      这个对我有用:

           RewriteCond %{HTTPS} off
           RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
           RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
           RewriteCond %{HTTPS} off
           RewriteCond %{HTTP_HOST} !^www\. [NC]
           RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
           RewriteCond %{HTTPS} on
           RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
           RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
      

      为我解决了这个问题,没有任何循环或其他错误。也许它会帮助别人。

      【讨论】:

      • 这个解决方案在尝试了许多项目大约 20 分钟后已经奏效,它并不完美,但其他一切都将非 http 定向到 www.example.com 我无法弄清楚!
      【解决方案3】:

      这很有可能。使用以下代码。这对我有用。

      RewriteCond %{HTTP_HOST} !^www\.
      RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1
      

      【讨论】:

      • 这对我不起作用,因为我没有根据 Scottie 的回答为 www.mydomain.com 和 mydomain.com 启用证书。
      【解决方案4】:

      万一未来的任何人(你好未来的人)偶然发现这个问题,我问了同样的问题,并在服务器故障处得到了回答。

      短版:不可能。

      长版:https://serverfault.com/questions/523199/redirect-all-http-and-https-non-www-urls-to-https-www-example-com-via-htaccess

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-16
        • 2021-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-02
        • 1970-01-01
        相关资源
        最近更新 更多