2015-05-21 69 views
1

我們有一個.htaccess重寫規則,它將所有頁面強制爲HTTPS。添加新條件後,重寫規則重定向不正確

我們需要防止一個頁面被重定向。

以下情況可能會奏效,但不是阻止該頁面重定向,而是實際上將其重定向到網站的索引。

# Redirect all non-ssl to ssl. 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !^\/newsletter\/ 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R] 

我們已經檢查了我們預期的結果對這裏:http://htaccess.madewithlove.be/

,我們得到正確的結果。該頁面通過302重定向重定向到主頁。這裏可能是什麼問題?

回答

1

試試這個規則爲第一個規則在你的.htaccess:

# Redirect all non-ssl to ssl. 
RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !/newsletter/ 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R] 

使用THE_REQUEST代替REQUEST_URI因爲這個規則之後可能還有其他的規則之前/。

+1

這工作!但我不明白'REQUEST_URI'發生了什麼。在RewriteCond中使用'REQUEST_URI'不應該對發生的重定向產生任何影響。你可以解釋嗎?與「THE_REQUEST」匹配是可以的,但我不明白爲什麼匹配'REQUEST_URI'沒有。 –

+1

這是因爲'REQUEST_URI'的值在應用其他規則後發生變化,但'THE_REQUEST'保持不變。 – anubhava