将整个网站重定向到https - 非www到www除了子域名

时间:2014-06-28 04:49:29

标签: apache .htaccess redirect

我需要设置我的.htaccess来为我的网站执行以下重定向。 (我花了很长时间研究SO并发现了许多与htaccess重定向有关的问题,但没有找到这个特定问题。)

 1. www.example.com
 2. http://www.example.com
 3. example.com
 4. http://example.com
 5. https://example.com


to https://www.example.com

但是,不应将任何子域重定向到www或https  即support.example.com

不应重定向到https://support.example.comwww.support.example.com

我目前在.htaccess

中有以下重定向代码
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{HTTPS} !=on 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

这正确地重定向

 1. www.example.com
 2. http://www.example.com

to https://www.example.com

并且还可以防止子域重定向。

然而

 3. example.com
 4. http://example.com
 5. https://example.com

被重定向到

 https://example.com

P.S。我已将链接放在代码块中,因为我没有足够的声誉来发布超过2个链接。

2 个答案:

答案 0 :(得分:0)

尝试一下,看看它是如何运作的,让我知道。

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

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

答案 1 :(得分:0)

              # BEGIN WordPress
              <IfModule mod_rewrite.c>
              RewriteEngine On
              RewriteBase //
              RewriteRule ^index\.php$ - [L]
              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteRule . //index.php [L]
              </IfModule>

              Redirect 301 / http://sample1.com
              # END WordPress

例如..

A:sample.com B:sample1.com

如果您想将sample.com重定向到sample1.com,那么您应该在重定向301旁边包含sample1.com。