将所有 HTTP 流量(包括子域)重定向到 HTTPS

将所有 HTTP 流量(包括子域)重定向到 HTTPS

我正在尝试将所有HTTP流量重定向到HTTPS包括子域。我使用 cPanel 在 FastComet 的共享主机上设置了域名。以下是我喜欢的重定向方式的一些示例。

http://www.example.com      ->     https://www.example.com
http://example.com          ->     https://example.com
http://www.example.com/mail ->     https://www.example.com/mail
http://example.com/mail     ->     https://example.com/mail
http://mail.example.com     ->     https://mail.example.com

我尝试将以下内容添加到我的.htaccess文件中

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(.+\.)?mydomain\.com$
RewriteRule ^(.*)$ https://%1mydomain.com/$1 [R=301,L]

更普遍的

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

但是它们都没有重定向http://mail.example.com到,https://mail.example.com而重定向http://example.com/mail到 可以https://example.com/mail工作。我缺少什么设置?

答案1

无需改变,只需复制和粘贴。

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

答案2

如果这是较新的 Apache。此功能可以在 中实现extra/http-vhosts.conf。但是你的.htaccess能够完成以下任务完全地取决于您的托管服务提供商是否愿意让您这样做。

如果你将以下内容放在.htaccess服务器根目录中的文件中。它应该可以实现你的目标:

ServerName MyServer.COM
Redirect permanent / https://myserver.com/

所有这些操作都只是发送一个301 permanent。因此,您不会受到 Google 的惩罚(如果您在意的话),并且浏览器书签和其他客户端会注意到这一变化。

这很容易理解。所以我就不多说了。

祝你好运!

相关内容