2017-03-01 148 views
-1

我試圖通過.htaccess強制HTTPS,並且我經常收到太多重定向錯誤。強制HTTPS不起作用

這是我的.htaccess文件:

RewriteEngine On 
 

 
RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC] 
 
RewriteRule ^(.*)$ http://patrickwhitehouse.pw/$1 [L,R=301] 
 

 
#force SSL 
 
RewriteCond %{HTTPS} !=on 
 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
 
Options +MultiViews 
 

 

 

 

 
<ifModule mod_gzip.c> 
 
mod_gzip_on Yes 
 
mod_gzip_dechunk Yes 
 
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ 
 
mod_gzip_item_include handler ^cgi-script$ 
 
mod_gzip_item_include mime ^text/.* 
 
mod_gzip_item_include mime ^application/x-javascript.* 
 
mod_gzip_item_exclude mime ^image/.* 
 
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
 
</ifModule> 
 

 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^&\ ]+).html 
 
RewriteRule .* /%1? [R=301,L] 
 

 
RewriteCond %{REQUEST_FILENAME} !-d 
 
RewriteCond %{REQUEST_FILENAME} !-f 
 
RewriteRule ^(.*)$ $1.html [L] 
 

 
RedirectMatch ^/blogs$ http://www.patrickwhitehouse.pw/blog.html

回答

1

你的第一個重寫規則是罪魁禍首,對於每一個成功的重定向到https然後重新重定向到硬編碼http再次上下一個後請求外部重定向...

試試這個稍作修改的版本,而不是:

RewriteEngine On  

RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC] 
RewriteRule ^(.*)$ %{REQUEST_SCHEME}://patrickwhitehouse.pw/$1 [L,R=301] 

#force SSL 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

或者說,有點清理:

RewriteEngine On  

# force host 'patrickwhitehouse.pw' 
RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC] 
RewriteRule^%{REQUEST_SCHEME}://patrickwhitehouse.pw%{REQUEST_URI} [L,R=301] 

# force SSL 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

我只是想你的解決方案,我仍然得到同樣的錯誤。 –

+0

我建議您清除瀏覽器緩存或進行深層重新加載......如果錯誤仍然存​​在,那麼您必須啓用重寫日誌記錄(在重寫模塊文檔中查找詳細信息),它會準確告訴您重寫內部發生了什麼引擎,或者您使用網絡嗅探器來檢查發送的實際重定向。 – arkascha

+0

哦,我只是看到你必須根據你的RedirectMatch ^/blogs $ http:// www.patrickwhitehouse.pw/blog.html'將這條規則修改爲'RedirectRule ^/blogs $%{REQUEST_SCHEME}:// patrickwhitehouse.pw/blog.html' – arkascha