【问题标题】:apache redirect in https from none www to www domainapache在https中从无www重定向到www域
【发布时间】:2020-12-23 06:33:32
【问题描述】:

编辑: Redirect permanent "/" "https://%{HTTP_HOST}/" 实际上在第一次重定向中不起作用。它似乎可以工作,因为我的 CDN 自动将 http 重定向到 https:,而不是因为我的设置。很抱歉造成混乱。


我正在尝试编写 Apache httpd 配置文件以将所有 http 流量重定向到 https,并且还需要将无 www 域重定向到 www。

例如
http://example.com http://www.example.com https://example.com
应该全部重定向到
https://www.example.com

这是我所做的:

<VirtualHost ipaddress:80>  
  ServerName example.com  
  ServerAlias www.example.com  

  Redirect permanent "/" "https://%{HTTP_HOST}/"
</VirtualHost>

这部分有效。所有http都重定向到https。请注意,%{HTTP_HOST} 已解析并替换。 现在我需要将无 www 重定向到 www

<VirtualHost ipaddress:443>
  SSLEngine on
  ServerName www.example.com
  ServerAlias example.com

  <If "%{HTTP_HOST} !~ /www/">
     Redirect permanent "/" "https://www.%{HTTP_HOST}/"
  </If>

  ...
</VirtualHost>

当我访问 https://example.com 时,它会重定向,但这次它会重定向到 https://www.%{HTTP_HOST}/ 而不是 https://www.example.com/

现在如果我使用
Redirect permanent "/" "https://www.example.com/"
然后https://example.com 将被重定向到https://www.example.com

所以看起来 %{HTTP_HOST} 在第二个 VirtualHost 块中没有被替换。

如何改正?

【问题讨论】:

    标签: apache redirect http-host


    【解决方案1】:

    您可以尝试使用重写规则

     RewriteEngine On
     RewriteCond %{HTTP_HOST} ^https://example.com [NC]
     RewriteRule ^(.*)$ https://www.example.com/$1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2018-06-02
      相关资源
      最近更新 更多