Pb url rewriting et redirection 301

WRInaute discret
Bonjour,

J'ai mis en place l'url rewriting sur mon site et je voudrais faire des redirections permanentes des anciennes pages vers les nouvelles sans perdre le référencement des anciennes pages.

J'ai lu dans un article sur abondance que l'on pouvait le faire en mettant :

Code:
RewriteRule recette.php?id_recette=2 recette-2.html [R=301]

Mais ça ne marche pas :cry: , quand j'appele la page recette.php?id_recette=2 et bien je reste bien sur cette page et je ne suis pas redirigée vers la page recette-2.html, je ne comprends pas pourquoi ça ne marche pas.

En plus je souhaiterais le faire pour toutes les recettes alors je pourrais mettre quelque chose de la forme :

Code:
RewriteRule recette.php?id_recette=$1 recette-([0-9]*).html [R=301]

Mais ça ne marche pas non plus.

Soit je comprends pas bien le fonctionnement soit je fais une erreur fondamentale ! J'ai compris que ses redirections servaient à rediriger les personnes arrivant sur la pge recette.php?id_recette=2 vers recette-2.html automatiquement et ceci aussi pour que les moteurs de recherche mettent à jour dans leur index les adresses de mon site.

Merci d'avance si quelqu'un peut m'aider car là je ne sais plus où chercher, ni quoi essayer ! :wink:
 
WRInaute discret
Code:
RewriteRule recette.php?id_recette=2 recette-2.html [R=301]

Euhhh... c'est pas l'inverse qu'il faut écriture ??
:arrow: RewriteRule recette-2.hmtl recette.php?id_recette=2 [R=301]

Et même mieux, en utilisant une variable à la place du numéro
RewriteRule recette-(.*).hmtl recette.php?id_recette=$1 [R=301]
 
WRInaute discret
Non ça ne marche pas non plus, j'ai effectivement d'abord essayé dans les 2 sens mais le tuto que j'ai vu sur abondance, c'est bien : RewriteRule recette.php?id_recette=2 recette-2.html [R=301] et non RewriteRule recette-2.html recette.php?id_recette=2 [R=301]

Ceci ne marche pas non plus : RewriteRule recette-([0-9]*).html recette.php?id_recette=$1 [R=301]

merci d'avance
 
WRInaute discret
J'ai bien regardé les autres messages que tu donnes, je te remercie, alors j'ai essayé, mais ça ne marche pas, je donne tout le code du fichier htaccess car ça vient peut être aussi du reste !

Code:
RewriteEngine On
RewriteRule ^recette\.php$ %{QUERY_STRING} [C]
RewriteRule id_recette=([0-9]+) http://www.recette-philomene.com/recette-$1.html [R=301] 
RewriteRule ^liste-([a-z]*)-([a-z]*)-([0-9]*).html /liste.php?name_cat=$1&limit=$2 [L]
RewriteRule ^liste-([a-z]*)-([0-9]*).html /liste.php?name_cat=$1&limit=$2 [L]
RewriteRule ^recette-facile-([0-9]*).html /recette-facile.php?limit=$1 [L]
RewriteRule ^liste-([a-z]*)-([a-z]*).html /liste.php?name_cat=$1 [L]
RewriteRule ^liste-([a-z]*).html /liste.php?name_cat=$1 [L]
RewriteRule ^plan-([0-9]*).html /plan.php?limit=$1 [L]
RewriteRule ^recette-([0-9]*).html /recette.php?id_recette=$1 [L]
RewriteRule (.*)\.html /$1.php [L]

Et voilà ce qu'il me répond :
Moved Permanently

The document has moved here.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Donc ça marche pas :cry:

qu'est ce que j'ai fait de mal, je comprends pas

Merci d'avance
 
WRInaute occasionnel
Peut-être dû au fonctionnement du .htaccess qui réévalue les adresses après réécritures.
Avec un peu de chance, ca devrait fonctionner
Code:
RewriteCond %{THE_REQUEST} recette\.php
RewriteCond ^recette\.php$ %{QUERY_STRING} [C]
RewriteRule id_recette=([0-9]+) http://www.recette-philomene.com/recette-$1.html [R=301,L]
 
WRInaute discret
Non ça ne marche touours pas, maintenant l'erreur est :
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, tech@nuxit.net and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
WRInaute occasionnel
Au temps pour moi, j'ai écrit RewriteCond au lieu de RewriteRule
Code:
RewriteCond %{THE_REQUEST} recette\.php
RewriteRule  ^recette\.php$ %{QUERY_STRING} [C]
RewriteRule id_recette=([0-9]+) http://www.recette-philomene.com/recette-$1.html [R=301,L]
 
WRInaute occasionnel
Non, il embarque les paramètres initiaux dans la redirection.
Code:
RewriteCond %{THE_REQUEST} recette\.php
RewriteRule  ^recette\.php$ %{QUERY_STRING} [C]
RewriteRule id_recette=([0-9]+) http://www.recette-philomene.com/recette-$1.html? [R=301,L]
Le ? après l'adresse indique que la redirection doit se faire sans paramètres.
 
WRInaute occasionnel
Il faut ajouter le ? dans la règle de réécriture pour que la redirection se fasse sans id_recette=10
 
WRInaute discret
Ok, je te remercie beaucoup, ça marche maintenant !

Désolée je n'avais pas vu que tu avais rajouté le ? à la fin, merci encore :wink:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut