2013-10-15 26 views
7

我想有人來幫助我在htaccess中的if-else語句。我想要的是htaccess讀取一個cookie並檢查它的值是否等於一個定義的值。如果它的計算結果爲false,則應該優先執行重定向,並阻止訪問請求的文件夾。如果評估返回錯誤,也許所有人的否認會更好。htaccess比較cookie值和重定向如果評估返回真/假

我知道下面的代碼檢查是否設置了一個命名的cookie值。如果沒有設置,它會在它下面執行重寫規則。但是,如何調整這條線以便檢查它是否等於某個特定值?

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !^.*cookie_name.*$ [NC] 
RewriteRule .* http://www.google.com [NC,L] 

我想什麼,但在.htaccess風格:

if ($_COOKIE['cookie_name'] != 'specific_value'){ 
//rewrite_rule or deny from all. 
} 
+0

可能重複的[如何做基於cookie值的htaccess重定向](http://stackoverflow.com/questions/3978726/how-to-do-htaccess-redirect-based-on-cookie-value) – mavrosxristoforos

+0

@ mavrosxristoforos。這不是重複的,因爲我實際上試圖比較值而不僅僅是檢查cookie是否設置。我發佈的htaccess代碼已經做到了。 –

回答

9

你靠近。該cookie字符串需要=

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value; [NC] 
RewriteRule^http://www.google.com [NC,L] 
1

您可以使用此代碼檢查cookie中的特定值:

RewriteEngine On 

RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value [NC] 
RewriteRule^http://www.google.com [NC,L,R=302] 
5

替換required_value與需要相匹配的值。

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !cookie_name=required_value;? [NC] 
RewriteRule^http://www.google.com [R=301,L] 

;?可以確保在比賽中,都有發生,當有多個cookie值對或當cookie_name是唯一的cookie集。這也可以防止在僅需要of(子字符串)的匹配時匹配像off這樣的cookie值。

相關問題