 |

L'URL Rewriting avec APACHE
L'URL Rewriting permet d'avoir des liens avec un nom simple est standard pour chaque lien, ce qui permet un bon travail des robots des moteurs et donc vous permet d'avoir un bon référencement pour votre site.
Installation dans APACHE
Pour utiliser le module de réecriture des URL à la volée, votre hébergeur doit avoir activé ce MOD, ou vous devez avoir accès aux paramêtres de configuration d'Apache (fichier httpd.conf).
Pour activer ce module, deux cas se présentent.
Si votre serveur Apache est en version 1 :
Vous devez décommenter les 2 lignes suivantes en enlevant le # en début de ligne :
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
Si votre serveur Apache est en version 2 :
Vous devez décommenter la ligne suivante en enlevant le # en début de ligne :
LoadModule rewrite_module modules/mod_rewrite.so
Et modifier ceci :
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
Vous pouvez désormais tester si le module est actif ou non.
Commencez par créer une page "test.php" à la racine de votre serveur.
Vous y insererez un simple texte.
Créez un fichier .htaccess, placé dans le même répertoire, ou vous y insererez le code suivant :
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test\.html$ /test.php
Il ne vous reste plus qu'à entrer l'URL suivante dans votre navigateur favori : http://votresite.com/test.html, et vous devriez voir apparaitre le texte de la page "test.php".
Et voila... l' URL test.html est desormais réecrite en test.php.
Si par malheur, une erreur 404 (page introuvable) ou pire 500 (Erreur du serveur) apparaissait, il y a de fortes chances pour que ce module ne soit pas actif chez votre hébergeur.
Réécrire des URL dynamiques
Votre site dynamique comporte surement des URL du genre :
http://votresite.com/frames.php?page=index&view=source
http://votresite.com/photo.php?album=12&id=1
Ce qui n' est pas très joli, difficilement mémorisable et finalement qui pose de réels problèmes d' indexation aux moteurs de recherche.
En effet la plupart ne prennent en compte qu'un nombre limité de paramètres dans l' URL, voir qui les ignorent complètement !
Les codes sont à insérer dans le fichier .htaccess, et utilisent Les Expressions Régulières.
Pour nos besoins, il est suffisant de savoir que :
- ^ : indique que nous sommes en début de ligne, ou au début de la chaîne de caractères. Cependant, entre crochets, la signification est différente.
- $ : indique lui que nous sommes en fin de ligne, ou de chaîne.
- . : remplace tout caractère inconnu.
- \ : échape un caractère utilisé dans la syntaxe regex. Par exemple, pour utiliser un point, la syntaxe est \.
- [0-9]+ : fait référence à un ou plusieurs chiffres à la suite.
- [a-z]+ : fait référence à une ou plusieurs lettres à la suite.
- [a-z0-9]+ : fait référence à un ou plusieurs caractères (lettres et chiffres confondus).
- * : fait référence à n'importe quelle suite de caractères (de 0 caractère jusqu'à l'infini).
- + : fait référence à n'importe quelle suite de caractères (de 1 caractère jusqu'à l'infini).
- () : les parenthèses permettent de "capturer" ce qui se trouve à l'intérieur afin de le rappeler dans la suite de la directive : le contenu du premier couple de parenthèses sera appelé par $1, le second par $2, etc...
Nous allons donc réécrire ces URL d'une manière plus simple.
- http://votresite.com/frames.php?page=index&view=source
deviendra : http://votresite.com/index.source.html
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)\.(.+)\.html$ /frames.php?page=$1&view=$2 [L]
- http://votresite.com/photo.php?album=12&id=1
deviendra : http://votresite.com/photo/12/1
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([0-9]+)/([0-9]+)$ /photo.php?album=$1&id=$2 [L]
Note : L'option [L] en fin de ligne indique à Apache qu'il peut s'arrêter de comparer dès qu'il trouve le résultat.
[Voir notre Génerateur d'URL Rewriting]
Nous avons vu comment ça se passe du côté du serveur mais au niveau du code PHP il faut maintenant avoir les bonnes url, c'est à dire au format .html.
Pour cela il y a deux manières, la première c'est que vous mettiez les bonnes url directement dans votre code, soit utiliser une fonction PHP inverse de celle du .htaccess.
Cet deuxième solution a l'avantage d'être extrêmement souple, si vous changez vos règles ou si le support de l'URL Rewriting est désactivé du serveur.
Voici la fonction PHP :
function URLRewriting($url) {
if(eregi("(.*).php(.*)",$url,$regs)) {
$monurl=$regs[1];
$geturl=$regs[2];
while(eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs)) {
$geturl=$regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
}
$url=$monurl.$geturl;
}
elseif(eregi("(.*).php",$url,$regs)) {
$url=$regs[1];
}
return $url.".html";
}
Cette fonction est écrite pour ne gérer que les url des fichiers .PHP en entrée, vous pouvez l'enrichir selon vos besoins.
[0] commentaire - Voir/Editer
CommentaireIl n'y a aucun commentaire pour le moment.
Poster un commentaire
 |

|