2009-06-29 6 views
0

Je suis nouveau sur mod_rewrite. J'essaie d'envoyer une URL à une autre, mais je n'arrive pas à la faire fonctionner.htaccess mod_rewrite avec paramètres dynamiques

que je veux transmettre cette URL: /cansas.php?m=2 & id = 2-0-0-0 & sid = Cansas à /Cansas-est-bon-pour-vous et laissez la En-tête répond avec un 301, ou juste mettre à jour l'URL via [R].

J'ai dans mon .htaccess:

options + FollowSymlinks

RewriteEngine sur

RewriteRule^cansas.php m = 2 & id = 2-0-0-0 & sid = cansas $ cansas-est-bon-pour-vous [NC, R = 301]

Je pensais que je pouvais faire un simple transfert, mais quelque part le long du chemin il cesse de fonctionner. Si je coupe le? M = 2 & id = etc, il transmet juste la partie cansas à la nouvelle partie de sorte qu'il ressemble à ceci: cansas-est-bon pour vous? M = 2 & id = 2-0- 0-0 & sid = cansas.

Comment puis-je le transférer lorsque j'ai plusieurs paramètres dynamiques dans la chaîne d'URL? Exemple sur les pages je dois transmettre:

/cansas.php?m=2 & id = 2-0-0-0 & sid = Cansas

/cansas.php?m=2 & id = 2 -1-0-0 & sid = Cansas

/cansas.php?m=2 & id = 2-2-0-0 & sid = Cansas

Toute aide serait grandement appréciée :)

M aybe il n'est pas possible de le faire de cette façon? La façon dont je l'ai mis en place pour le moment est que je veux utiliser de nouvelles URLs/cansas-is-good-for-you qui lit à partir de la source /cansas.php?m=2 & id = 2-0-0 -0 & sid = cansas, mais l'URL affichée dans le navigateur doit être:/cansas-is-good-for-you. J'ai besoin de transmettre ce vieux cansas.php? URL vers la nouvelle URL :)

Répondre

1

Vous devez vérifier la requête d'une URL avec la directive RewriteCond que la directive RewriteRule ne gère que le chemin URL:

RewriteCond %{QUERY_STRING} ^m=2&id=2-0-0-0&sid=cansas$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

Si vous voulez vérifier pour un seul paramètre , utilisez ceci:

RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

Et pour ce faire que pour les demandes initiales, vous devez vérifier la request line:

RewriteCond %{THE_REQUEST} ^GET\ /cansas\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 
+0

Merci beaucoup, Gumbo. Cela a résolu parfaitement. –

Questions connexes