2 votes

.htaccess ModRewrite avec 2 paramètres

@anubhava a fourni une excellente réponse à ma question précédente de faire une réécriture interne .htaccess avec le code ci-dessous, qui a fonctionné pour ma seule requête de recherche.

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^file\.php$ /directory/%1? [R=301,L,NC]

RewriteRule ^directory/(\d+)/?$ /directory/file.php?id=$1 [L,QSA,NC]

Je voulais en faire une question distincte, car ma prochaine question est légèrement différente. Comment puis-je adapter cette méthode pour qu'elle fonctionne également avec deux paramètres ? Par exemple, je souhaiterais également http://ipaddress/directory/file.php?id=47?name=value1 pour rediriger vers http://ipaddress/directory/47/value1 nom= peut également être une combinaison de lettres et de chiffres, comme valeur1050, etc.

Merci de votre attention. @anubhava pour votre réponse précédente, et peut-être qu'il y a un moyen d'ajouter ceci deuxième paramètre également ?

2voto

RavinderSingh13 Points 29608

En considérant que vous séparez les valeurs de votre chaîne de requête en id=1234&name=value123 Comme il n'est pas possible de passer deux fois la chaîne de requête, vous pouvez essayer la solution suivante, qui corrige la tentative que vous avez montrée.

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^id=(\d+)&name=(.*)$ [NC]
RewriteRule ^file\.php/?$ /directory/%1/%2? [R=301,L,NC]

RewriteRule ^directory/(\d+)/(.*)/?$ /directory/file.php?id=$1&name=$2 [L,QSA,NC]


2ème solution : Ajouter une solution supplémentaire ici, soit utiliser la solution ci-dessus, soit utiliser la solution suivante, une seule à la fois, s'il vous plaît.

RewriteEngine on
RewriteCond %{THE_REQUEST} \s/file\.php\?d=(\d+)&name=(\S+)\s [NC]
RewriteRule ^ /directory/%1/%2? [R=301,L]
RewriteRule ^directory/(\d+)/(.*)/?$ /directory/file.php?id=$1&name=$2 [NC,L,QSA]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X