Redirection 301 et .htaccess

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Redirection 301 et .htaccess

Message le Ven Jan 16, 2009 14:37

Bonjour,

J'ai réécris dernièrement deux urls et j'aimerais effectuer une redirection 301 des anciennes pages vers les nouvelles, mais en lisant certains tutoriels en ligne je n'arrive pas à comprendre comment m'y prendre.

Voici ce que j'ai dans mon .htaccess concernant les urls en question:

Code: Tout sélectionner
RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ index.php?page=tag&t=$2&p=$1 [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ index.php?page=author&author_name=$2&p=$1 [L]


Pouvez vous m'aider SVP ?

Merci d'avance.


e-kiwi
Modérateur
Modérateur
 
Messages: 13817
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Jan 16, 2009 14:40

[R=301] ?

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 14:44

e-kiwi a écrit:[R=301] ?

Oui mais comment l'appliquer, à un moment il faut inverser la regex et c'est là où je ne comprends pas.

EDIT:
Je viens d'essayer cette expression mais ça me renvois une erreur 500:

Code: Tout sélectionner
RewriteRule ^index.php?page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)
tags/$2/$1.html [R=301]

J'ai suivi ce tutoriel, du moins ce que j'ai pu comprendre mais ça ne fonctionne pas:
http://www.webrankinfo.com/referencemen ... ctions.php

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 16:02

Quand je fais maintenant ça :
Code: Tout sélectionner
RewriteRule ^index.php?page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$ tags/$2/$1.html [R=301,L]

Je n'ai plus d'erreur 500 mais je n'obtient aucune redirection quand je visite une page du genre index.php?page=tag&t=test&p=1

Comment savoir quand ça fonctionne ? Est ce que en visitant la page plus haut le navigateur redirige vers la page tags/1/test.html et donc cette url s'affiche dans la barre de navigation ? Ou bien rien ne se passe mais les moteurs de recherche s'en rendent compte par je ne sais quel moyen ?

Merci


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Jan 16, 2009 17:29

il faut utiliser RewriteCond %{QUERY_STRING} et un paramètre "stop" pour éviter que ca boucle :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ tags/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ index.php?page=author&author_name=$2&p=$1&stop [L]

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 17:35

webmasterlamogere a écrit:il faut utiliser RewriteCond %{QUERY_STRING} et un paramètre "stop" pour éviter que ca boucle :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ tags/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ index.php?page=tag&t=$2&p=$1?stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ index.php?page=author&author_name=$2&p=$1?stop [L]


J'ai essayé avec ce que tu me suggère mais ça ne fonctionne pas, je suis redirigé vers :
h**p://www.monsite.com/srv/www/htdocs/web99/html/tags/1/formation.html

Sinon entre temps je suis parvenu à cette solution:

Code: Tout sélectionner
RewriteRule (.*) $1///%{QUERY_STRING} [C]
RewriteRule ^index.php///page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$ /tags/$2/$1.html? [R=301]


qui me redirige vers la page voulue mais malheureusement j'ai une erreur 500 !!!


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Jan 16, 2009 17:41

essaye en ajoutant des / devant le deuxième paramètre de RewriteRule :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ /tags/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ /index.php?page=author&author_name=$2&p=$1&stop [L]

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 17:52

La redirection fonctionne bien mais la page ne se charge pas et je recçois cette erreur: "Boucle de redirection"

Je te file mon .htaccess au cas où il y'aurai un conflit entre deux expressions:

Code: Tout sélectionner
# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

RewriteEngine on
RewriteRule ^category(.*).html$ index.php?page=category&category_id=$1 [L]
RewriteRule ^article(.*).html$ index.php?page=article&article_id=$1 [L]
RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ index.php?page=tag&t=$2&p=$1 [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ index.php?page=author&author_name=$2&p=$1 [L]
RewriteRule ^(.*).html$ index.php?pagedb=$1 [L]
RewriteRule ^index.html$ index.php

RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ /tags/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ /index.php?page=author&author_name=$2&p=$1&stop [L]

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>

ErrorDocument 404 /error404.php
ErrorDocument 403 /error404.php
ErrorDocument 401 /error404.php
ErrorDocument 500 /error404.php


En fait ne faut-il pas mettre [R=301, L] au lieu de [L] ?


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Jan 16, 2009 17:58

tu as laissé les anciennes réécritures. supprime ces deux lignes puisqu'il y a les même en dessous avec &stop :
Code: Tout sélectionner
RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ index.php?page=tag&t=$2&p=$1 [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ index.php?page=author&author_name=$2&p=$1 [L]

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 18:16

Bon ça fonctionne pour la page " tag", en faisant ceci:

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ /tags/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ /index.php?page=author&author_name=$2&p=$1&stop [L]


Mais quand j'ajoute la page "author" rien ne fonctionne plus, voila ce que je fais:

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ /tags/%2/%1.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^page=author&author_name=(.*)&p=([0-9]+)$
RewriteRule ^index\.php$ /auteur/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ /index.php?page=author&author_name=$2&p=$1&stop [L]

RewriteRule ^(.*).html$ index.php?pagedb=$1 [L]
RewriteRule ^index.html$ index.php


Une idée ?
En tout cas merci beaucoup pour ton aide, grace à toi j'y suis presque :)


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Jan 16, 2009 18:22

il manque un rewriterule :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=tag&t=([0-9a-zA-Z-]+)&p=([0-9]+)$
RewriteRule ^index\.php$ /tags/%2/%1.html? [R=301,L]
RewriteCond %{QUERY_STRING} ^page=author&author_name=(.*)&p=([0-9]+)$
RewriteRule ^index\.php$ /auteur/%2/%1.html? [R=301,L]

RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
RewriteRule ^auteur/([0-9]+)/(.*)\.html$ /index.php?page=author&author_name=$2&p=$1&stop [L]

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 18:42

Je m'en était rendu compte juste après avoir posté le message
.
Même si j'ai ajouté le rewriterule ça ne change rien, par exemple quand je vais sur cette page:
http://www.articlesenligne.com/index.ph ... r_name=FWH
je ne suis pas redirigé
Mais quand je vais sur cette page:
http://www.articlesenligne.com/index.ph ... action&p=1
ça fonctionne !!

C'est étrange !!


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Jan 16, 2009 19:27

c'est normal. il faut dupliquer toutes ces règles et enlever "&p=([0-9]+)" et "&p=$1"

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 19:32

J'ai pas très bien compris, pourrais-tu me montrer un exemple ou bien me montrer directement ce que je dois mettre à la place ?

Merci.

Edit: Ok j'ai compris :)

3bida
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mer Juin 06, 2007 21:50

Message le Ven Jan 16, 2009 19:43

Bon j'ai fais ce tu m'a demandé càd:

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^page=author&author_name=(.*)&p=([0-9]+)$
RewriteRule ^index\.php$ /auteur/%2/%1.html? [R=301,L]
RewriteRule ^auteur/1/(.*)\.html$ /index.php?page=author&author_name=$1&stop [L]

J'ai mis auteur/1/ parce que j'ai mis en place la pagination que récement et que mes pages indexées dans google ne tiennent que sur une seule page (la première).
Seulement ça ne fonctionne pas.

Donc pour faire simple, les pages sous forme:
/index.php?page=author&author_name=nometprenom
doivent êtres redirigées vers:
/auteur/1/nometprenom.html

Merci encore une fois

Redirection 301 et .htaccess

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Tester le type de redirection
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Analyse de l'entête HTTP
    Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités