2009-08-07 7 views
2

J'ai cette URL:Réécrire chaîne de requête

oldsite.com/profile.php?uid=10

je voudrais réécrire à:

newsite.com/utenti/10

Comment puis-je faire cela?

MISE À JOUR: J'ai écrit ceci:

RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$ 
RewriteRule ^profile\.php$ http://www.newsite.com/utenti/$1 [R=301,L]

Mais $ 1 match de la chaîne complète de requête et non pas seulement l'ID utilisateur.

Répondre

5

Pour utiliser les correspondances dans les conditions de réécriture, vous devez utiliser% 1 au lieu de $ 1. En outre, si vous souhaitez supprimer le reste de la chaîne de requête, vous devez ajouter un?

 
RewriteCond %{QUERY_STRING} ^uid=([0-9]+)$ 
RewriteRule ^profile\.php$ http://www.newsite.com/utenti/%1? [R=301,L] 
2

Le $n ne se réfèrent aux matches de la directive RewriteRule. Utilisez %n pour référencer les correspondances de la directive RewriteCond correspondante.

En outre, vous devez spécifier une requête vide pour la substitution. Sinon, la requête d'origine sera utilisée.

Et si vous voulez avoir le reste de la requête de rester intacte, utilisez cette règle:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)uid=([0-9]+)(.*) 
RewriteRule ^profile\.php$ http://new.example.com/utenti/%3?%1%4 [R=301,L] 
Questions connexes