【问题标题】:Rewrite HTTPS domain to another HTTPS domain - htaccess将 HTTPS 域重写为另一个 HTTPS 域 - htaccess
【发布时间】:2016-08-27 03:56:17
【问题描述】:

目前我有

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.com/$1 [R,L]

RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://domain.com/$1 [R,L]

RewriteCond %{HTTP_HOST} ^domain2\.com [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://domain.com/$1 [R,L]

RewriteCond %{HTTP_HOST} ^www\.domain2\.com [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://domain.com/$1 [R,L]

将 www 和非 www domain.com 重定向到 https://domain.com 并将 www 和非 www domain2.com 重定向到 https://domain.com domain2 是一个停放的域。

但您仍然可以访问https://domain2.comhttps://www.domain2.com 我希望这些重定向到https://domain.com 请指教,谢谢

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    您可以结合其中一些规则并修改domain2 -> domain 的重定向规则以始终重定向到https://domain.com

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(domain\.com)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,L]
    
    RewriteCond %{HTTP_HOST} ^(?:www\.)?domain2\.com$ [NC]
    RewriteRule ^ https://domain.com%{REQUEST_URI} [R=301,NE,L]
    

    【讨论】:

    • 你得到了什么确切的错误?尝试完全清除浏览器缓存,然后进行测试。
    • 它现在可以工作了,在我清除缓存后,使用隐身模式,你的代码似乎做了我以前的代码在上面做的事情,但要短得多,但我仍然遇到问题:“https:/ / www.domain.com” | "https://www.domain2.com" | “https://domain2.com”这些域仍然没有重定向到 https://domain.com 感谢您到目前为止的帮助:)(否则添加的空格无法正确显示)
    • 查看更新的规则并再次在隐身模式下进行测试。它将重定向https:// www.domain.comhttps://domain.comhttps://www.domain2.comhttps://domain.com。请注意,第二条规则中没有RewriteCond %{SERVER_PORT} 80 条件。
    • 尝试了更改的答案,仍然有同样的问题,不知道是因为我正在运行 cPanel/WHM 还是因为我正在使用 Apache 2.4 我想要更改它的原因是因为我有 1 个 https 证书作为 domain.com 而不是 domain2.com 所以希望它重定向。
    • 您需要为domain2 正确配置VirtualHost,以便DocumentRoothttphttps 都是通用的。请记住,https://domain2.com 的 SSL 警告仍将显示在浏览器中,因为在 SSL 握手后运行重写规则。
    【解决方案2】:

    应该这么简单:

    RewriteCond %{REQUEST_SCHEME} !https [NC,OR]
    RewriteCond %{HTTP_HOST} !^domain.com$
    RewriteRule ^ https://domain.com%{REQUEST_URI} [R=301,NE,L]
    

    不过,请记住 @anubhava 关于为 domain2.com 配置 VirtualHost 和 SSL 的最后一条评论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2017-03-07
      • 2016-02-25
      相关资源
      最近更新 更多