Tutoriel Url Rewriting

Vous avez des questions sur le référencement ? Des conseils ou astuces...

Modérateur: david96

Tutoriel Url Rewriting

Messagede Yatooweb » Mar 27 Fév 2007 19:00

Lors de l'optimisation du référencement d'un site dynamique, vous serez sans doute amené à passer par l'url rewriting, il s'agit d'une réecriture de l'adresse de votre page.
Exemple: index.php?page=5 pourrait s'écrire de multiples façons:
texte-5.html
5-texte.html
...

1. Exemple sans URL Rewriting

Pour l'instant nous allons créer un fichier index.php qui propose 3 pages et n'utilise pas d'url rewriting.

index.php
Code: Tout sélectionner
<?php
if (!$page)
{
   echo '<h1>Bienvenue sur la page d\'index</h1><br />';
   echo 'Menu: <a href="index.php?page=1">Référencement</a> - <a href="index.php?page=2">Création de site</a>';
}
else if ($page==1)
{
   echo '<h1>Bienvenue dans la section Référencement</h1><br />';
   echo 'L\'url de cette page est: <i>index.php?page=1</i><br /><br />';
   echo '<a href="index.php">Retour à l\'index</a>';
}
else if ($page==2)
{
   echo '<h1>Bienvenue dans la section Création de site</h1><br />';
   echo 'L\'url de cette page est: <i>index.php?page=2</i><br /><br />';
   echo '<a href="index.php">Retour à l\'index</a>';
}
?>

2. Utilité du fichier .htaccess

Le fichier .htaccess va réécrire une url dans une forme différente (vérifiez que votre hébergeur autorise l'utilisation de ce fichier).
Exemple pour le fichier index.php ci-dessus:
L'url index.php?page=2 allait appeler la page index.php?page=2 (Il n'y a donc aucune réecriture à effectuer)
Exemple que nous allons voir ci-dessous:
L'url 2-nomdemapage.html devra appeler la page index.php?page=2 (Il faudra donc réecrire l'url pour que le serveur puisse aller chercher la bonne page)

3. Exemple avec l'URL Rewriting

Nous allons créer 2 fichiers, le fichier index.php et le fichier .htaccess.

index.php
Code: Tout sélectionner
<?php
if (!$page)
{
   echo '<h1>Bienvenue sur la page d\'index</h1><br />';
   echo 'Menu: <a href="1-referencement.html">Référencement</a> - <a href="2-creation-de-site.html">Création de site</a>';
}
else if ($page==1)
{
   echo '<h1>Bienvenue dans la section Référencement</h1><br />';
   echo 'L\'url de cette page est: <i>1-referencement.html</i><br /><br />';
   echo '<a href="index.html">Retour à l\'index</a>';
}
else if ($page==2)
{
   echo '<h1>Bienvenue dans la section Création de site</h1><br />';
   echo 'L\'url de cette page est: <i>2-creation-de-site.html</i><br /><br />';
   echo '<a href="index.html">Retour à l\'index</a>';
}
?>

.htaccess
Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index.html$ index.php [L]
RewriteRule ^([0-9]+)-(.+)\.html$ index.php?page=$1 [L]

Ce tutoriel ne vous présente qu'un simple exemple afin de vous aider à comprendre et à mettre en place votre premier url rewriting.
Je vous conseille l'article Mod_rewrite, ou la réécriture des URL "à la volée" sur Webmaster HUB
Avatar de l’utilisateur
Yatooweb
Administrateur
Administrateur
 
Messages: 1018
Inscription: Mar 30 Jan 2007 14:10
Localisation: Aude

Messagede amangin » Dim 13 Mai 2007 23:00

Bonsoir,

Suite à une modification de la structure de ma base de donnée je cherche à faire la redirection permanente suivante:
Code: Tout sélectionner
RewriteRule ^a_decouvrir.php?article=patrimoine$ /a_decouvrir.php?id=3 [R=301]

$id ne reçoit pas la valeur 3, ce type de redirection existe :?:

++
Antoine
amangin
YatooAverti
YatooAverti
 
Messages: 88
Inscription: Mar 13 Fév 2007 22:13
Localisation: Isère

Messagede david96 » Dim 13 Mai 2007 23:25

Si c'est seulement pour une page, tu peux exploiter la fonction header() de PHP pour cela, à mettre tout en haut de ton code of course ! ;-)
Code: Tout sélectionner
<?php
$url="http://".$_SERVER['SERVER_NAME'];
$uri=$_SERVER['REQUEST_URI'];
if($uri=="/a_decouvrir.php?id=3")
{
  $uri=preg_replace("!^/a_decouvrir.php\?id=3$!","/a_decouvrir.php?article=patrimoine",$uri);
  header("Status: 301 Moved Permanently", false, 301);
  header("Location: ".$url.$uri);
  exit();
}
?>


Je n'ai pas vérifié, mais normalement ça devrais le faire, peux tu me confirmer ? :)
edit : J'ai vérifié, c'est bon ça marche chez me ! :D
Avatar de l’utilisateur
david96
Modérateur
Modérateur
 
Messages: 963
Inscription: Mar 13 Fév 2007 00:52
Localisation: Grenoble

Messagede Yatooweb » Lun 14 Mai 2007 09:02

Pour faire ce type de redirection dans ton htaccess il est nécessaire que tu utilises un RewriteCond, voici un petit exemple ci-dessous :wink:

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^article=patrimoine$
RewriteRule ^a_decouvrir.php$ /a_decouvrir.php?id=3 [R=301]
RewriteCond %{QUERY_STRING} ^article=blabla$
RewriteRule ^a_decouvrir.php$ /a_decouvrir.php?id=4 [R=301]

et ainsi de suite...
Avatar de l’utilisateur
Yatooweb
Administrateur
Administrateur
 
Messages: 1018
Inscription: Mar 30 Jan 2007 14:10
Localisation: Aude

Messagede amangin » Lun 14 Mai 2007 20:24

RewriteCond marche au poil :lol:

Merci

pas facile de trouver de la documentation à usage pédagogique sur .htaccess sur le net. le site Apache donne quelques exemples mais c'est complexe, je n'ai pas trouvé l'équivalent de php.net. par exemple

++
Antoine
amangin
YatooAverti
YatooAverti
 
Messages: 88
Inscription: Mar 13 Fév 2007 22:13
Localisation: Isère

Messagede CVX » Lun 3 Sep 2007 09:00

J'ai une question

Quand j'ai créé mon dernier site en date, j'ai réfléchi à deux solutions différentes pour l'apparence de mes url réécrites :

- /articles-section-titre-id.html

ou

- /articles/section/titre-id.html

J'ai opté pour la première fois pour la seconde solution, un peu dans le doute car je n'avais pas le temps de faire la course aux avis à cette époque.

Ma question est, y a t-il une différence entre les deux façons au niveau du référencement par google ?
CVX
YatooAverti
YatooAverti
 
Messages: 79
Inscription: Dim 26 Aoû 2007 14:40

Messagede david96 » Lun 3 Sep 2007 14:31

Je ne pense pas ! Mais pour un souci de compréhension mieux vaut éviter le slash comme séparateur qui désigne par défaut un répertoire.
Avatar de l’utilisateur
david96
Modérateur
Modérateur
 
Messages: 963
Inscription: Mar 13 Fév 2007 00:52
Localisation: Grenoble

Messagede CVX » Lun 3 Sep 2007 22:18

Ben justement l'idée c'est que même s'il n'existe pas de répertoire en vrai, ça donne

Code: Tout sélectionner
/articles/index.html
                ->/articles/section/index.html
                                            ->/articles/section/titre-id.html
CVX
YatooAverti
YatooAverti
 
Messages: 79
Inscription: Dim 26 Aoû 2007 14:40

Messagede david96 » Lun 3 Sep 2007 22:38

ImageC'est vous qui voyez !
Avatar de l’utilisateur
david96
Modérateur
Modérateur
 
Messages: 963
Inscription: Mar 13 Fév 2007 00:52
Localisation: Grenoble

Messagede Yatooweb » Mer 5 Sep 2007 09:23

Pas de réelle différence pour l'url rewriting, les deux techniques sont bonnes (le site yatooweb utilise les 2), cela dépend de l'utilisation. Par contre il est vivement de ne pas dépasser 4 / dans une url, ceci semble avoir un impact négatif au niveau de la profondeur.
Avatar de l’utilisateur
Yatooweb
Administrateur
Administrateur
 
Messages: 1018
Inscription: Mar 30 Jan 2007 14:10
Localisation: Aude

Messagede CVX » Mer 5 Sep 2007 20:12

Flute.... L'impact négatif est-il très important ? J'ai jusqu'à 6 "/" /me va se suicider

Ca va être un peu hors sujet mais bon... si je modifie mes urls (ça doit représenter quelques 2000 urls /re-suicide), que se passe-t-il au niveau de google et que faire pour être sûr de garder le PR des anciennes pages ?
CVX
YatooAverti
YatooAverti
 
Messages: 79
Inscription: Dim 26 Aoû 2007 14:40

Messagede david96 » Mer 5 Sep 2007 21:58

Redirection 301, qui en théorie permet de dire aux moteurs de recherches de ne plus indexer les anciennes url, mais de mettre leur acquis (indexation et PR) aux profits de la nouvelle.
Avatar de l’utilisateur
david96
Modérateur
Modérateur
 
Messages: 963
Inscription: Mar 13 Fév 2007 00:52
Localisation: Grenoble

Messagede amangin » Mar 16 Oct 2007 13:26

Bonjour :D

encore un petit casse tête:

J'ai la redirection suivante :
RewriteRule ^(location)\.([a-z-]+)\.php$ /resultat_recherche_annonces.php?cat_recherche=$1.$2 [L]

qui renvoi :
location-les-arcs.php
vers
resultat_recherche_annonce.php?cat_recherche=location.les-arcs

je voudrais rajouter des paramètres sans faire de nouvelle redirection, par exemple :
location-les-arcs.php?nbe_pers=N&date=jjmmaa

ils ne sont pas pris en compte alors que cela fonctionne avec:
resultat_recherche_annonce.php?cat_recherche=location.les-arcs

une idée :?:

Merci

++
Antoine
amangin
YatooAverti
YatooAverti
 
Messages: 88
Inscription: Mar 13 Fév 2007 22:13
Localisation: Isère

Messagede amangin » Mer 17 Oct 2007 20:59

Très simple : il faut remplacé [L] par [QSA,L]

l'article :
http://www.webmaster-hub.com/publicatio ... e-des.html

donne des infos utiles ... :wink:
Antoine
amangin
YatooAverti
YatooAverti
 
Messages: 88
Inscription: Mar 13 Fév 2007 22:13
Localisation: Isère

Re: Tutoriel Url Rewriting

Messagede Julien bao » Ven 13 Avr 2012 09:45

merci de votre partage. C'est interessant pour moi. :D
pour votre voyage Vietnam
Julien bao
YatooNovice
YatooNovice
 
Messages: 3
Inscription: Ven 13 Avr 2012 09:41


Retourner vers Référencement général

Qui est en ligne

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

cron
W3C XHTML 1.0
W3C CSS 2.1
YATOOWEB © 2005 - 2020


Contact | Logos & liens | Partenaires | Labo | Plan du site