将非 www 重定向到 www(包括 https)

将非 www 重定向到 www(包括 https)

我无法重定向:

https://example.comhttps://www.example.com

我目前已经得到了这个,但它没有达到我需要的结果,我不确定为什么:

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

我基本上想将所有内容重定向到https://www.example.com

我感谢任何帮助。

答案1

根据您的评论,您尝试重定向是为了避免浏览器窗口中出现 URL 不匹配的 SSL 警告。这无法完成,因为重定向发生在 SSL 握手之后(因为它使用响应Location:标头来请求,而该请求直到 SSL 握手发生并被用户接受后才会发送)。

你最好的做法是:

  • 按照@HampusLi 的建议,将 example.com 拆分为一个单独的网站VirtualHost并使用 mod_alias
  • 购买另一个证书example.com并将其应用于此VirtualHost

example.com或者,您可以获取适用于和的SAN(主题备用名称)证书www.example.com

答案2

您不需要 mod_rewrite 来实现这一点,您可以在 http vhost 下使用更轻量级的内置模块 mod_alias 和以下简单的语法:

Redirect permanent / https://example.com/

相关内容