2009-04-07 11 views
5

/foo/.htaccess fa un reindirizzamento internoCome fare questo lavoro? % RewriteCond {ENV: UNIQUE_ID}!% {QUERY_STRING}

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

/bar/.htaccess deve riconoscere che la richiesta non era interno, il problema è che io non riesco a capire come rendere il lavoro confronto

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

anche un

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 

non corrisponderanno, suppongo che ci sia un problema di sintassi nel destro l'o f l'espressione, la percentuale di escape non aiuta.

ho provato che quanto sopra sia variabile hanno lo stesso valore su un reindirizzamento interno come

RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

mostrerebbe esso.

Il server è Apache/2.2.3

Grazie, Laurian

risposta

15

Purtroppo non è possibile confrontare due variabili direttamente con mod_rewrite. (O almeno io non so come fare questa operazione.)

Ma c'è una soluzione per questo:

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

ho scelto il : come separatore ma è possibile utilizzare qualsiasi altro separatore se si volere. E se puoi specificare la struttura dei valori UNIQUE_ID, dovresti farlo.

+1

Questo è molto utile! Non avevo capito che si potevano combinare più valori ambientali come quello. –

+0

In effetti questo è un trucco da sapere !! Grazie! – greydet

0

Se il referrer non era lo stesso dominio in cui ci si trova, ad esempio la prima volta che una persona visita ma non ha utilizzato un collegamento all'interno del proprio sito Web, è possibile controllare HTTP_REFERRER. La stessa tecnica viene utilizzata per impedire il collegamento in hotline alle immagini.