簡體   English   中英

HTACCESS無法與rewriteCond一起使用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM