2017-06-17 82 views
1

我认为我的问题可以通过正确的.htaccess配置或PHP重定向(Laravel框架)修复。通过https重定向多个子域

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

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

所有的子域指向/并且工作正常。

我有我的.htaccess配置为重定向“http”为“https”,它工作正常。

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

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

RewriteCond %{HTTPS_HOST} ^us.mysite.com$ [NC] 
RewriteRule ^(.*)$ https://us.mysite.com/?d=US [R=301,NC,N] 

RewriteCond %{HTTPS_HOST} ^germany.mysite.com$ [NC] 
RewriteRule ^(.*)$ https://germany.mysite.com/?d=DE [R=301,NC,N] 

RewriteCond %{HTTPS_HOST} ^france.mysite.com$ [NC] 
RewriteRule ^(.*)$ https://france.mysite.com/?d=FR [R=301,NC,N] 

RewriteCond %{HTTPS_HOST} ^uk.mysite.com$ [NC] 
RewriteRule ^(.*)$ https://uk.mysite.com/?d=UK [R=301,NC,L] 

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

我该如何解决?谢谢!

回答

0

有没有这样的事情HTTPS_HOST,只有HTTP_HOST。你也必须防止无限循环。我在末尾放置了HTTPS重定向,并对其进行了设置,以便在HTTP上访问时,国家/地区URL不会获得双重重定向。那就是:

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需要的d PARAM的?

另一件事是,这是删除请求的任何请求URI。你不想像你在HTTPS重定向时那样保留它们吗?

相关问题