htaccess和https /非www到https / www

时间:2018-05-23 18:38:13

标签: .htaccess

我知道有很多关于重定向的帖子,我现在已经阅读了很多帖子,但我发现的只有少数似乎触及了我需要的内容,而且往往似乎包含了相互矛盾的信息

我需要得到:

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

更重要的是:

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

我可以找到前两个的许多解决方案。像this一样:

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

或者这个:

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} http [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,L,R]

这些规则看起来像我应该追求的,但我只获得了涵盖https://www.example.com的证书。第三个重定向是否可能? (https://example.comhttps://www.example.com)。我链接的问题中的答案似乎暗示可能可能没有其他证书,但存在分歧。

我原本以为没有解决问题的方法,但我希望能有并且会感激输入。

*编辑:如果我没有获得https://example.com的证书,它将不会被搜索引擎归类为副本吗?

1 个答案:

答案 0 :(得分:1)

要在子域(* - > www)之间进行重定向,您需要为运行https的每个域提供证书,或者您需要一个可以处理所有域的通配符证书。

重定向是一个完全独立的问题。

获得有效连接后,您可以重定向或不重定向。

如果连接无效(错误/缺少ssl证书),则重定向永远不会发生。