需要针对子域URL的htaccess重定向代码解决方案,以重定向到没有www的URL

时间:2017-03-20 15:12:29

标签: php apache .htaccess redirect mod-rewrite

我有一个域example.com,我在.htaccess文件中添加了以下重定向代码,以重定向到https://www.example.com/https://test.example.com/https://www.example.com/test/

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

1)当我在浏览器example.com中加载URL时,它会被重定向到https://www.example.com

2)我在example.com中创建了一个子域文件夹'test'。因此,当我加载URL example.com/test时,它会被重定向到https://www.example.com/test/

需要以下解决方案

1)当我加载网址test.example.com时,会将其重定向到https://www.test.example.com,但我希望将其重定向到https://test.example.com

2)当我加载网址www.example.com/test时,会将其重定向到https://www.www.example.com/test/,但我希望将其重定向到https://www.example.com/test/

3)当我加载网址www.example.com时,会将其重定向到https://www.www.example.com/,但我希望将其重定向到https://www.example.com/

有人可以帮忙吗?提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用此规则

RewriteEngine on

#redirect subdomain to https
RewriteCond %{HTTPS}#%{HTTP_HOST} ^off#(sub\.domain\.com)$
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
#redirect main domain to https www
RewriteCond %{HTTPS}#%{HTTP_HOST} ^off#(?:www\.)?(example\.com)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]

在测试这些新的重定向之前清除浏览器缓存。

如果您有多个子域,则可以使用以下模式将其重定向到https:

^off#(sub\.domain\.com|sub2.example.com|sub3.example.com|other)$