2009-04-07 17 views
5

/foo/.htaccess hat eine interne UmleitungWie funktioniert das? RewriteCond% {ENV: UNIQUE_ID}!% {QUERY_STRING}

RewriteRule ^(.*)$ /bar/?%{ENV:UNIQUE_ID} 

/bar/.htaccess erkennen muss, dass die Anforderung nicht intern war, ist das Problem, dass ich kann nicht herausfinden, wie man die Arbeit Vergleich

RewriteCond %{ENV:UNIQUE_ID} !%{QUERY_STRING} 

sogar ein

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 

nicht übereinstimmen, nehme ich an, um eine Syntax Problem in der rechten o gibt es Für den Ausdruck hilft das Entkommen von% nicht.

Getestet habe ich, dass die oben beide Variablen auf eine interne Umleitung als

den gleichen Wert haben es
RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

zeigen würde.

Der Server ist Apache/2.2.3

Danke, Laurian

Antwort

15

Leider kann man nicht vergleichen zwei Variablen direkt mit mod_rewrite. (Oder zumindest weiß ich nicht, wie dies entweder zu tun.)

Aber es gibt eine Abhilfe für dieses:

RewriteCond %{ENV:UNIQUE_ID}:%{QUERY_STRING} !^(.+):\1$ 

ich die : als Separator gewählt, aber Sie können, wenn Sie andere Trennzeichen verwenden möchte. Und wenn Sie die Struktur der UNIQUE_ID Werte angeben können, sollten Sie das tun.

+1

Dies ist SO nützlich! Ich wusste nicht, dass man mehrere Umweltwerte so kombinieren könnte. –

+0

In der Tat ist dies ein Muss, Trick zu kennen !! Vielen Dank! – greydet

0

Wenn der Referrer nicht dieselbe Domain ist, in der Sie sich befinden, z. B. wenn eine Person zum ersten Mal einen Link auf Ihrer eigenen Website verwendet, können Sie den HTTP_REFERRER überprüfen. Dieselbe Technik wird verwendet, um eine direkte Verbindung zu Bildern zu verhindern.

Verwandte Themen