Besoin récrire de l'ancienne URL:Comment réécrire 2 paramètres GET à l'aide mod_rewrite .htaccess
example.com/search?search_query=SOMEQUERY&search_type=videos&type=public
à
example.com/search/videos?search_query=SOMEQUERY&type=public
Besoin récrire de l'ancienne URL:Comment réécrire 2 paramètres GET à l'aide mod_rewrite .htaccess
example.com/search?search_query=SOMEQUERY&search_type=videos&type=public
à
example.com/search/videos?search_query=SOMEQUERY&type=public
Essayez quelque chose comme près du haut de votre fichier .htaccess
:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^search_query=([^&]*)&search_type=(videos)&type=(public)$
RewriteRule ^search$ /search/%2?search_query=%1&type=%3 [R,L]
Ceci est une correspondance exacte pour l'URL donnée à titre d'exemple, sauf que SOMEQUERY est variable.
%1
, %2
et %3
sont backreferences aux sous-masques capturées correspondant à la précédente expression de comparaison. c'est à dire. <SOMEQUERY>
, videos
et public
. %2
et %3
sont vraiment juste pour la cohérence et pour vous permettre d'ajouter facilement un autre search_type par exemple. par exemple. search_type=(videos|images)
.
Il s'agit d'une redirection temporaire (302). Changez le R
en R=301
si cela est destiné à être permanent, mais seulement après vous être assuré qu'il fonctionne correctement. (Les 301 sont mis en cache par le navigateur, ce qui peut rendre les tests problématiques.)
Fonctionne bien! Merci beaucoup! Très intelligiblement et clairement expliqué. Il y a encore un petit problème avec l'encodage de l'alphabet cyrillique dans la requête. Nous allons résoudre cela avec php ou nginx. Meilleurs voeux! –
De rien. Si cela répond à votre question, veuillez marquer la réponse comme "acceptée" (coche à gauche sous les flèches) pour la retirer de la liste des questions sans réponse. Une fois que vous avez 15+ représentant, vous pouvez également modifier les réponses (et d'autres questions) que vous trouvez utiles. Très apprécié, merci :) – MrWhite