2013-02-19 31 views
0

我知道有很多類似的問題,但我花了2天以上沒有成功研究它,所以你是我最後的希望)切換HTTP來使用mod_rewrite

HTTPS我寫了下面的重寫規則:

RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} ^((/member/settings)?/orders/?)$ [NC] 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301] 

RewriteRule \.(gif|jpe?g|png|css|js|eot|woff|ttf|svg)$ - [NC,L] 

RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} !^((/member/settings)?/orders/?)$ [NC] 
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301] 

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

我希望網址example.com/orders/example.com/member/settings/orders/總是重定向到HTTPS,其他所有網址都強制使用HTTP。所有查詢也應轉發至index.php。 而且,顯然,所有媒體文件都應該保持與請求相同的協議。

當我要求http://example.com/orders/首先重定向到https://example.com/orders/,但第二次重定向到http://example.com/index.php?/orders/。實際上預計什麼,但問題是'index.php'出現在瀏覽器的地址欄中。

問題是如何擺脫瀏覽器地址欄中的'index.php'?

任何幫助將不勝感激。

回答

0

然後第二次重定向到http://example.com/index.php?/orders/ ....我沒有從那裏「的index.php」出現在URL的想法...

因爲你有一個重寫規則來做到這一點:

RewriteRule ^(.*)$ index.php?/$1 [NC,QSA,L] 

不知道你想在該塊中完成什麼,但嘗試擺脫它。

+0

感謝您的回覆。我需要在index.php中執行所有請求,這就是爲什麼我需要這個規則。問題是'index.php'出現在瀏覽器的地址欄中。 – 2013-02-19 15:42:50