[英]HTACCESS not working with rewriteCond
我有一个页面,其中设置了一个名为“ utm”的cookie,其中包含每个用户的IP。
之后,用户访问另一个页面,我想检查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]
无法使用,因为不允许在RewriteCond
RHS上使用%1
。
您可以使用以下规则:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} utm=([^;]*)$ [NC]
RewriteCond %{HTTP_COOKIE}::%{REMOTE_ADDR} utm=([^;]+).*?::(?!\1).*$ [NC]
RewriteRule ^ error.html [L]
在anubhava的帮助下,我弄清楚了并解决了我的问题! 代码必须是:
RewriteCond %{REQUEST_URI} !(/index\.php|/teste\.php|/)$
RewriteCond %{HTTP_COOKIE} !^.*utm=([^;]*).*$ [OR]
RewriteCond %{HTTP_COOKIE}:%{REMOTE_ADDR} ^.*utm=([^;]*).*:(?!\1).*$
RewriteRule .* - [G,L]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.