incomprehension en redirection !

tinphotographe

Nouveau WRInaute
Bonjour , je suis depuis hier soir sur une recherche de redirection sur mon site, sans réellement avoir les réponses.
je cherche à réaliser une règle de redirection d'anciennes pages vers des nouvelles ...

http://urldusite.fr/mobile_menu-catalogue.php?categorie_id=9&elementsCategorie_id=36

qui doit pointer en finalité vers /urldusite.fr

j'ai essayé
https://teams.sl-network.fr/bc-concept/pl/pb4nbdu6c3yf5gq7fuas4roiee
RedirectMatch /mobile_menu-catalogue.php(.*) http://urldusite.fr

Mais j'ai un mauvaise redirection http://urldusite.fr/?categorie_id=9&elementsCategorie_id=36

la redirection me rajoute ?categorie_id=9&elementsCategorie_id=36

Merci de votre aide
Merci
 

emualliug

WRInaute impliqué
Je ne crois pas que RedirectMatch permette de manipuler la QueryString. Par contre tu peux obtenir le même effet par une RewriteRule :

Code:
RewriteRule ^mobile_menu-catalogue.php$ / [QSD,R=302]

À noter que :
  • cette RW émet une redirection code 302, comme le fait naturellement un RedirectMatch ; un 301 peut être plus adapté, l'adaptation à faire est triviale ;
  • la regex que je propose est plus restrictive que la tienne, mais elle me semble mieux coller à la problématique.
 

tinphotographe

Nouveau WRInaute
Merci mais pourquoi une redirection 302 est plus adaptée par rapport à une 301

j'ai essayé de mettre en place sur htaccess sans succès

RewriteRule ^mobile_menu-catalogue.php$ /10-photos-nature [QSD,R=302]
 

emualliug

WRInaute impliqué
C'est plutôt l'inverse, enfin ça dépend des cas bien sûr :
  • 301 (Moved Permanently) [Redirection permanente] : la ressources a été définitivement déplacée, l'ancienne adresse peut être oubliée ;
  • 302 (Found) [Redirection temporaire] : la ressource demandée a été trouvée mais à une autre adresse ; l'ancienne adresse peut encore être utilisée.
Il faudrait voir le htaccess dans son ensemble pour se faire une meilleure opinion. Bien entendu, mod rewrite doit être activé.

Code:
RewriteEngine On
RewriteRule ^mobile_menu-catalogue.php$ / [QSD,R=302]
 

tinphotographe

Nouveau WRInaute
Merci c'est très clair,
Le mod rewrite est bien activé mais je n'ai pas de redirection et je reste sur une 404 !

RewriteEngine On
RewriteRule ^mobile_menu-catalogue.php$ / index.php [QSD,R=302]


urldusite.fr/mobile_menu-urldusite/catalogue.php?categorie_id=9&elementsCategorie_id=36
urldusite.fr/mobile_menu-urldusite/catalogue.php?categorie_id=8&elementsCategorie_id=23

impossible de rediriger ce type de pages vers ma page index
 

emualliug

WRInaute impliqué
Dans ton code, il y a une erreur : il ne faut pas d'espace entre "/" et "index.php" laquelle mention peut d'ailleurs être enlevée (en principe, l'URI relative de la home est juste "/", pas "'/index.php" ou "index.html").

Pour en savoir plus, il faudrait le reste du htaccess. La ligne, telle que je te l'ai donnée, fonctionne en tant que telle. Si ça bloque, c'est parce qu'il y a un conflit par ailleurs.
 

tinphotographe

Nouveau WRInaute
Merci beaucoup, j'ai modifié mon erreur mais j'ai toujours le retour de ma 404 sans redirection.
J'ai retiré l'ensemble des redirections pour voir ! mais sans succès ....
 

emualliug

WRInaute impliqué
OK, je vois. Ça dépend des URL sources.

Dans ton premier message tu veux rediriger depuis /mobile_menu-catalogue.php. Ensuite tu parles de /mobile_menu-urldusite/catalogue.php. Forcément, deux URL distinctes, c'est pas la même expression régulière.

Donc depuis quelles URL sources vers quelles URL de destination ?
 

tinphotographe

Nouveau WRInaute
j'arrive à faire une redirection URL par Url mais ce n'est pas la solution il me semble !!!

RewriteCond %{QUERY_STRING} (?:^|&)categorie_id\=9(?:$|&)
RewriteCond %{QUERY_STRING} (?:^|&)elementsCategorie_id\=44(?:$|&)
RewriteRule ^mobile_menu\-catalogue\.php$ /? [L,R=301]
 

emualliug

WRInaute impliqué
C'est-à-dire uniquement les pages mobile_menu-catalogue.php lorsque :
  • categorie_id est égal à 9 ET elementsCategorie est égal à 36
  • OU categorie_id est égal à 10 ET elementsCategorie est égal à 323
Ou alors toutes les pages mobile_menu-catalogue.php quels que soient les paramètres ?

Ou encore autre chose ?

(Au passage, la redirection vers la homepage en cas de suppression de produit ne me semble pas forcément pertinente, et s'il faut faire suivant les paramètres, une redirection via htaccess n'est pas néccessairement la meilleure solution)
 

tinphotographe

Nouveau WRInaute
Toutes les pages avec /mobile_menu-catalogue.php
et quels que soient les paramètres sont à rediriger.
Que me conseillez vous ? l'ensemble des pages hors mobile sont redirigées correctement.
 

emualliug

WRInaute impliqué
Dans ce cas pourquoi s'embêter avec des RewriteCond sur les paramètres ? La RewriteRule suffit :
Code:
RewriteRule ^mobile_menu-catalogue\.php$ / [QSD,R=301,L]

Il n'est pas nécessaire d'échapper "-", car dans ce contexte il ne sert pas à indiquer un intervalle de caractères. Échapper le "." est optionnel, puisque, à défaut, il convient à admettre tout caractère, dont le point.

Je préfère le drapeau QSD (QuerryStringDiscard) à "/?" (qui correspond à la notation d'avant Apache 2.4.0, ce qui nous ramène à début 2012).
 
Dernière édition:

tinphotographe

Nouveau WRInaute
Merci pour votre aide ! j'ai pu me familiariser avec les redirections..et en plus cela fonctionne parfaitement
oui ! le RewriteRule est suffisant...
Encore merci !
 

Discussions similaires

Haut