2017-06-17 110 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重定向時那樣保留它們嗎?

相關問題