C'est une des méthodes d'urlrewriting elle à l'avantage de ne nécessiter aucun paramètrage du serveur apache.
L'exemple fonctionne dans un cas général comme présenté par « le journal du net » sur certains serveurs il n'est pas possible de l'appliquer (Free par exemple).
Pour c’est exemple il nous faut :
- Un fichier index.htm qui contient les liens nous permettant d’appeler la « page1.php » et la « page2.php » avec différents paramètres.
index.htm
- Code: Tout sélectionner
<html>
<head>
<title>Test url rewriting</title>
</head>
<body>
<div align="center">
<p>
<a href="reptest/messages/1_789.php" target="_blank">Page 1 avec le paramètre 789 </a>
<br>
<a href="reptest/messages/1_12.php" target="_blank">Page 1 avec le paramètre 12</a>
</p>
<p>
</a> <a href="reptest/messages/2_bonjour.php" target="_blank">Page 2 avec le paramètre Bonjour</a>
</p>
</div>
</body>
</html>
- On créé un répertoire (le nom n’a pas d’importance) par exemple : reptest
- On y met un fichier .htaccess contenant :
.htaccess
- Code: Tout sélectionner
<FilesMatch "^messages$">
ForceType application/x-httpd-php
</FilesMatch>
« messages » étant le nom du fichier qui contiendra le code PHP permettant de traiter l’URL et d’en déduire les paramètres.
- On arrive au fichier principal, celui qui va transformer notre url en paramètres ( voir l’article du journal du net) .
Dans cet exemple le fichier s’appelle « messages », le nom n’a pas d’importance, il faut simplement qu’il corresponde à celui qui est dans le fichier .htaccess.
messages
- Code: Tout sélectionner
<?
// Dans cet exemple on considère que l'on aura toujours 2 paramètres.
// Il faut améliorer le code si l'on souhaite passer un nombre variable d'arguments
$tab=explode("/",$REQUEST_URI);
$id=$tab[count($tab)-1];
$vars=explode("_",$id);
$voir=$vars[0];
$param=strtok($vars[1], ".");
include("lire.php");
?>
- On a ensuite le fichier PHP qui va exécuter le traitement correspondant à nos paramètres, ici il s’appelle lire.php.
lire.php
- Code: Tout sélectionner
<?
// on effectue ici les traitements correspondant aux paramètres
// ici les paramètres sont accessibles par les variables $voir et $param (ces variables sont visibles ici car lire.php est inclus dans le fichier messages ou elle sont définit.)
switch ($voir) {
case "1" :
include("page1.php");
break;
case "2" :
include("page2.php");
break;
default :
break;
}
?>
et enfin les fichiers page1.ph et page2.php qui seront affichés suivant les paramètres passés
page1.php
- Code: Tout sélectionner
<html>
<head>
<title>Page 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>C'est la page 1 avec le paramètre n° <? echo $param?></h1>
</body>
</html>
page2.php
- Code: Tout sélectionner
<html>
<head>
<title>Page 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>C'est la page 2 avec le paramètre <? echo $param?></h1>
</body>
</html>
Ce qui nous donne l’arborescence suivante :
Index.htm
/reptest
.htaccess
messages
lire.php
page1.php
page2.php
Il existe un autre méthode d'url rewriting, de utiliser les fonctions du module mod_rewrite, et les expressions régulières.Ceci sera l'objet d'un autre article.Voici la partie de la documentation Apache sur l' url rewriting avec le module mod_rewrite (version anglaise) et ici mod_rewrite en version française
Voici quelques liens afin d'approfondir l'étude de l'url rewriting :
http://www.searchtools.com/robots/goodurls.html
http://evolt.org/article/Making_clean_U ... index.html
http://www.alistapart.com/stories/succeed/
http://www.linktree.info/urlrewriting.php
http://www.engelschall.com/pw/apache/rewriteguide/
http://www.oreillynet.com/faqs/list.csp ... 0Rewriting
http://www.webkreator.com/php/configura ... urity.html
VoilĂ ceci devrait permettre au moteur de recherche de mieux parcourir le site.

