通过https重定向多个子域

时间:2017-06-17 07:26:11

标签: apache redirect mod-rewrite subdomain

我认为我的问题可以通过正确的mailer配置或PHP重定向(Laravel框架)来解决。

我的网站大约有20个国家/地区。如果我想去美国,链接是:www.mysite.com/?d = US

所以我创建了20个子域名,如:“us.mysite.com”,“uk.mysite.com”,“germany.mysite.com”,“france.mysite.com”..

所有子域都指向.htaccess并且工作正常。

我已将/配置为将“http”重定向为“https”,并且工作正常。

.htaccess

我尝试这个并且应该工作......但是不是......即使我只为一个国家工作。

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

我认为这与第一个redireccion(SSL)有一些冲突.. https。我去“us.mysite.com”并且没有发生..我只得到“https://us.mysite.com”没有“/?d = US”..

我该如何解决?谢谢!

1 个答案:

答案 0 :(得分:0)

没有 <Style x:Key="MyThumb" TargetType="Thumb"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Grid.ZIndex" Value="1"/> <Setter Property="RenderTransform"> <Setter.Value> <ScaleTransform ScaleX="1.1" ScaleY="1.1"/> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> ,只有HTTPS_HOST。您还必须防止无限循环。我将您的HTTPS重定向设置在最后并进行设置,以便在HTTP上访问时,国家/地区网址不会获得双重重定向。这是:

HTTP_HOST

但是,您是否只需检查代码中的RewriteEngine on RewriteCond %{HTTP_HOST} ^us.mysite.com$ RewriteCond %{HTTPS} off [OR] RewriteCond %{QUERY_STRING} !(?:^|&)d=US(?:&|$) RewriteRule ^ https://us.mysite.com/?d=US [R=301,L] RewriteCond %{HTTP_HOST} ^germany.mysite.com$ RewriteCond %{HTTPS} off [OR] RewriteCond %{QUERY_STRING} !(?:^|&)d=DE(?:&|$) RewriteRule ^ https://germany.mysite.com/?d=DE [R=301,L] RewriteCond %{HTTP_HOST} ^france.mysite.com$ RewriteCond %{HTTPS} off [OR] RewriteCond %{QUERY_STRING} !(?:^|&)d=FR(?:&|$) RewriteRule ^ https://france.mysite.com/?d=FR [R=301,L] RewriteCond %{HTTP_HOST} ^uk.mysite.com$ RewriteCond %{HTTPS} off [OR] RewriteCond %{QUERY_STRING} !(?:^|&)d=UK(?:&|$) RewriteRule ^ https://uk.mysite.com/?d=UK [R=301,L] RewriteCond %{HTTPS} off RewriteCond %{QUERY_STRING} !(?:^|&)d= RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 而不需要HTTP_HOST param?

另一件事是这会丢弃所请求的任何请求URI。你不想像在HTTPS重定向中一样保留它们吗?