2017-04-12 162 views
0

我應該有一個htaccess每個網站,但我有一個爲4個網站 - 2英國的一個和2個非盟的。這是一個Codeigniter版本。 2個站點位於dev.mydomain.extension中,2個站點是活動站點。htaccess重寫太多的重定向codeigniter - 非SSL到子網域除SSL以外

我想做什麼:

  1. 重定向任何http://mydomain.co.ukhttps://WWW.mydomain.co.uk
  2. 重定向任何 http://WWW.mydomain.co.ukhttps://WWW.mydomain.co.uk
  3. 根本不 變化http://dev.mydomain.co.uk

我想下面,但我總是得到'太多重定向'的錯誤,我不認爲它會處理萬維網的事情。我有點深入。

RewriteEngine on 
RewriteBase/
##setting 2 exceptions 
RewriteCond %{HTTP_HOST} !=dev.mydomain.co.uk 
RewriteCond %{HTTP_HOST} !=dev.mydomain.com.au 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
##Codeigniter rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

回答

1

有這樣說:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{ENV:HTTPS} !on 
RewriteCond %{HTTP_HOST} ^(?!dev\.)(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

##Codeigniter rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

記住測試這種變化之前,清除瀏覽器緩存。

+0

尋找隱身我會用你的代碼「重定向你太多次」。我錯過了一個排除,也包括雖然: '#從舊站點抓住任何index.asp RewriteRule ^(。*)\ index.asp $/$ 1 [R = 301,L]' 如果它使一個區別。這就是codeigniter規則之前。 – tobzzz

+0

不,我已經在我的Apache服務器上測試了這個規則,除非有其他規則或代碼重定向回http://,否則這條規則沒有重定向循環。 btw隱身並不意味着舊的緩存消失了。完全清除瀏覽器緩存或使用命令行'curl'對其進行測試。 – anubhava

+0

我把它減少到前6行(7個空格),所以沒有CI規則。清除緩存,在代理服務器中檢查,所有重定向過多。它*確實*說https:在URL欄中。所以不知道這意味着什麼 - 就像它到達那裏,然後有一個隨後的重定向。 – tobzzz