2014-10-06 38 views
0

編輯:這個問題是現在沒有實際意義的整個網站將使用HTTPS的.htaccess力www和某些路徑和Concrete5漂亮的URL力HTTPS

.htaccess導致重定向循環供應。

我需要所有三個部分的工作,每個的目的是在評論。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

# Force HTTPS for /book unless dev or already there 
RewriteCond %{HTTP_HOST} !^dev\. 
RewriteCond %{HTTPS} !^on$ 
RewriteRule ^book https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# Force www prefix unless dev or already there 
RewriteCond %{HTTP_HOST} !^dev\. 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ %{REQUEST_PROTOCOL}://www.%{HTTP_HOST}/$1 [L,R=301] 

# Concrete5 pretty URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}/index.html !-f 
RewriteCond %{REQUEST_FILENAME}/index.php !-f 
RewriteRule . index.php [L] 
</IfModule> 

我有到現場服務器上的工作,因爲該證書是唯一有效的有(有需要www.)。

我已經嘗試了很多變化的上述,但我很難過,所以我希望新鮮的眼睛會有所幫助,很多預先感謝。

回答

0

你的第二條規則看起來不正確,因爲REQUEST_PROTOCOL的值爲HTTP/1.1

您可以使用此代碼:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

# Force HTTPS for /book unless dev or already there 
RewriteCond %{HTTP_HOST} !^dev\. 
RewriteCond %{HTTPS} !^on$ 
RewriteRule ^book https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 

# Force www prefix unless dev or already there 
RewriteCond %{HTTPS}s on(s)| 
RewriteCond %{HTTP_HOST} !^(?:www|dev)\. [NC] 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

# Concrete5 pretty URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}/index.html !-f 
RewriteCond %{REQUEST_FILENAME}/index.php !-f 
RewriteRule . index.php [L] 
</IfModule> 
+0

謝謝,但我仍然得到重定向循環。你能否告訴我你在做什麼不同(除了'REQUEST_PROTOCOL'位)以避免循環? – jezmck 2014-10-06 12:43:13

+0

您是否注意到(s)|'上的條件'RewriteCond%{HTTPS}的使用並且它是反向引用'%1'。測試一個新的瀏覽器以避免301緩存。同時告訴我你在瀏覽器中輸入了什麼URL。 – anubhava 2014-10-06 14:17:57

+0

謝謝。現在我們的問題變得沒有實際意義,因爲我們現在正在將整個網站更改爲使用HTTPS。 – jezmck 2014-10-07 11:37:05