2011-08-29 25 views
13

Tengo un problema para volver a escribir una url. quiero esto:RewriteCond para url con los parámetros

http://www.foo.com/test.php?u=s1&id=12345&img=12 

a

http://app.foo.com/12345-s1-12.test 

primer parámetro u es una cadena, y parámetros de ID img son números enteros.

He empezado con algo así:

RewriteCond %{REQUEST_URI} ^/test.php?u=(.*)&id=(.*)&img=(.*)/ [NC] 
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L] 

Gracias :)

EDIT:

sigue sin funcionar, pero yo estoy cerca!

RewriteCond %{REQUEST_URI} ^/test.php [NC] 
RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*) 
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L] 

Ahora dame ese enlace:

http://app.foo.com/12345-s1-12.test?u=s1&id=12345&img=12 

En lugar de:

http://app.foo.com/12345-s1-12.test 

:(

Respuesta

26

Resuelto

RewriteCond %{REQUEST_URI} ^/test.php [NC] 
RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*) 
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test? [R=301,L] 

Al colocar un ? al final de RewriteRule, se elimina la información de la cadena de consulta anterior.

-1

¡Esto funciona perfectamente! Usé esto, pero me pregunto por qué la URL de destino muestra "% 3f" al final.

que estoy usando:

RewriteCond %{REQUEST_URI} ^/ie/xx/yy.php [NC] 
    RewriteCond %{QUERY_STRING} ^rubric=(.*)&nr=(.*) 
    RewriteRule (.*) https://www.newdom.com/xx/yy.php?rubric=%1&nr=%2 [R=301,L] 

¿Por qué es 3F% al final?

Cuestiones relacionadas