[英]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.