.htaccess mod_rewrite for https://subdomain.domain.com到https://www.subdomain.domain.com

时间:2014-01-11 06:40:50

标签: .htaccess mod-rewrite redirect url-redirection

我在mod_rewrite文件中使用以下.htaccess来永久重定向我的域名

来自

https://domain.com

https://www.domain.com

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

我应该如何mod_rewrite重定向我的子域

https://subdomain.domain.com

https://www.subdomain.domain.com

我的意思是如何使用.htaccess mod_rewrite将第三级域名从https://重定向到https://www.

谢谢,

2 个答案:

答案 0 :(得分:1)

将您的第一条规则更改为以下规则。这应该将浏览器重定向到1跳中正确的URL。在第二个条件中,如果它位于网址前面,则匹配www.,或者第一个捕获组中没有任何内容,以及第二个捕获组中剩下的所有内容。这可能看起来违反直觉,但这可以确保我们在网址前面没有www.两次,但如果还没有www.,则可以将RewriteRule ^添加到主机名中那里。 RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(www\.|)(.*)$ RewriteRule ^ https://www.%2%{REQUEST_URI} [L,R=301] 只是编写“匹配所有内容”的一种奇特方式(或者:“匹配每个开头的字符串”,甚至是空字符串的情况)。

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

然后,您需要第二条规则来处理已在https上的请求:

{{1}}

答案 1 :(得分:1)

此单一规则应处理您的主域和子域:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

确保将其作为DocumentRoot/.htaccess

中的第一条规则放置