各ユーザーの IP を含む「utm」という名前の Cookie を設定するページがあります。
その後、ユーザーは別のページにアクセスし、Cookie「utm」が設定されているかどうか、および Cookie の値がユーザーの IP であるかどうかを確認したいと考えています。それは非常に単純ですが、私はそれを機能させることができません。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} ^.*utm=([^;]*)$
RewriteCond %{REMOTE_ADDR} !^%1$
RewriteRule .* error.html [L]
問題は、Cookie の値が IP であっても、ユーザーが常に error.html に排出されることです。最も奇妙なのは、明示的に自分の IP を入力してテストすると、動作することです。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} ^.*utm=([^;]*)$
RewriteCond %{REMOTE_ADDR} !^111.222.111.222$
RewriteRule .* error.html [L]
そのため、IP を正規表現に入れると、error.html に排出されず、すべて正常に動作しますが、IP を使用せずに %1 を使用すると、正確に私の IP を持つ Cookie でさえ機能しません。
編集
anubhava 氏の助けを借りて、次のコードにたどり着きました。ただし、Cookie に含まれる IP が実際のユーザーの IP と異なる場合は、まだ機能しません。
RewriteEngine On
RewriteCond %{REQUEST_URI} !(/index\.php|/teste\.php|/)$
RewriteCond %{HTTP_COOKIE} !^.*utm=([^;]*).*$ [OR]
RewriteCond %{HTTP_COOKIE}:%{REMOTE_ADDR} ^.*utm=([^;]*).*:(?!\1)$
RewriteRule .* - [G,L]