Voici un exemple complétant un article
du journal du net sur l'urlrewriting. Cette méthode permet
de faciliter le référencement des pages accessibles à
l'aide d'url du type index.php?var1=valeur1&var2=valeur2.
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
<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
<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
<?
// 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
<?
// 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
<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
<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_URLs_with_Apache_and_PHP/18/22880/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?id_subject=7&source_category=H.%20URL%20Rewriting
http://www.webkreator.com/php/configuration/php-session-security.html
Voilà ceci devrait permettre au moteur de recherche de mieux parcourir
le site.
|