2013-10-15 12 views
7

htaccessのif-elseステートメントで誰か助けてもらえますか?私が望むのは、htaccessがクッキーを読み取り、その値が定義された値と等しいかどうかをチェックすることです。 falseと評価された場合、リダイレクトを実行し、要求されたフォルダからのアクセスを防止する必要があります。たぶん、評価が偽を返すならば、すべてからの否定はより良いでしょう。htaccessは評価がtrue/falseを返した場合にクッキー値とリダイレクトを比較します。

次のコードでは、名前付き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

[クッキー値に基づいてhtaccessリダイレクトを行う方法](http://stackoverflow.com/questions/3978726/how-to-do-htaccess-redirect-based-on-cookie-value) – mavrosxristoforos

+0

@ mavrosxristoforos。クッキーが設定されているかどうかを単に確認するのではなく、実際に値を比較しようとしているのは重複ではありません。私がすでに投稿したhtaccessのコードはそうしています。 –

答えて

9

あなたが近くにいます。クッキー文字列は=を必要とします:

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

あなたはクッキーに特定の値をチェックするこのコードを使用することができます:

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_nameのみCookieセットで起こることを確認します。これにより、of(部分文字列)のみの一致が必要な場合は、offのようなクッキー値での照合も防止されます。

関連する問題