我在mod_rewrite
文件中使用以下.htaccess
来永久重定向我的域名
来自
到
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我应该如何mod_rewrite重定向我的子域
这
到
https://www.subdomain.domain.com
我的意思是如何使用.htaccess mod_rewrite将第三级域名从https://
重定向到https://www.
?
谢谢,
答案 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