2009-04-07 14 views
5

/foo/.htaccess hace un redireccionamiento interno¿Cómo hacer que esto funcione? RewriteCond% {ENV: UNIQUE_ID}! {QUERY_STRING}%

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

/bar/.htaccess necesita reconocer que la solicitud no era interno, la cuestión es que yo no puede encontrar la manera de hacer el trabajo de comparación

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

incluso un

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 

no coincidirán, supongo que hay un problema de sintaxis en la mano derecha o f la expresión, escapar% no ayuda.

I probado que lo anterior tanto variables tienen el mismo valor en un redireccionamiento interno como

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

lo mostraría.

El servidor es Apache/2.2.3

Gracias, Laurian

Respuesta

15

Lamentablemente no se puede comparar dos variables directamente con mod_rewrite. (O al menos no sé cómo hacer esto tampoco.)

pero hay una solución para esto:

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

Elegí el : como separador, pero se puede utilizar cualquier otro separador si querer. Y si puede especificar la estructura de los valores UNIQUE_ID, debe hacerlo.

+1

¡Esto es TAN útil! No me di cuenta de que podía combinar múltiples valores ambientales como ese. –

+0

De hecho, este es un truco para saberlo !! ¡Gracias! – greydet

0

Si el referente no era el mismo dominio en el que se encuentra, como la primera vez que una persona visita pero no utiliza un enlace dentro de su propio sitio web, puede verificar el HTTP_REFERRER. La misma técnica se usa para evitar enlaces directos a las imágenes.

Cuestiones relacionadas