【问题标题】:htaccess url rewrite http www and non-www to https www + https non-www to https wwwhtaccess url 将 http www 和非 www 重写为 https www + https 非 www 到 https www
【发布时间】:2014-12-16 21:38:12
【问题描述】:

我正在寻找一组将执行以下操作的重写规则:

  • http www 和 http 非 www 到 https www
  • https 非 www 到 https www

你也可以说我想要所有不等于https://www.somedomain.com的url,重写为https://www.somedomain.com。

我已经看到了很多答案,但是我找不到与上述匹配的一组重写规则,并且很难将其中一些规则组合成一组可靠的规则来完成上述操作。

提前致谢!

【问题讨论】:

  • 为什么 OP 没有针对这个问题询问“您尝试过什么”?
  • 什么/谁是 OP?如果这就是您所说的“您尝试过什么”的意思,那么发布众多无法完成工作的解决方案似乎毫无用处。

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:
RewriteCond %{HTTP_HOST} ^(?:www\.)?somedomain1\.com$
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.somedomain1.com%{REQUEST_URI} [NE,R=301,L]

它对我有用,除了 https://somedomain1.com 没有重定向到 https://www.somedomain1.com

【讨论】:

    【解决方案2】:

    您可以在 DOCUMENT_ROOT/.htaccess 文件中使用这条规则:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^(?:www\.)?somedomain1\.com$
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^ https://www.somedomain1.com%{REQUEST_URI} [NE,R=301,L]
    
    RewriteCond %{HTTP_HOST} ^(?:www\.)?somedomain2\.com$
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^ https://www.somedomain2.com%{REQUEST_URI} [NE,R=301,L]
    

    【讨论】:

    • 非常感谢!如果我有 2 个我希望它工作的域(www.somedomain1.com、www.somedomain2.com),我将如何扩展它?并且不应该让您的重写规则使用 https 而不是 http?
    • 谢谢!现在我也看到了浏览器的“问题”。浏览器输出警告*该网站未保存,并在您单击“访问未保存网站”后立即进行重写(https://non-www to www)。但至少它现在正确地重写了! * = SSL 仅对 www.somedomain.com 有效
    • 浏览器警告出现,因为 SSL 证书协商发生在 mod_rewrite 规则之前。
    • @anubhava - 我使用了与您在我们网站上提到的相同的规则,但在浏览器上出现错误“此网页有重定向循环”,我还想重定向所有带有或不带 www 的请求 & http到domain.com。非常感谢您的任何帮助。
    • @NipunTyagi:您可能有一些冲突的规则,因为如果单独使用此答案中发布的规则是有效的。您可以打开一个新问题并发布您的 .htaccess
    猜你喜欢
    • 2017-12-04
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2017-12-28
    相关资源
    最近更新 更多