Explication
La dérive consiste dabord à planter (avec lurl réécrite) la page en erreur 404, et de la rediriger vers lurl physique dune manière transparente.
Entrons dans le vif du sujet et essayons de réécrire page.php?param=01 en page-01.html
Pour commencer il nous faut planter la page, ben alors la cest le plus simple. Si lon veut planter une page en 404, suffit de donner une fausse url ;) Vu que lurl page-01.html nexiste pas, cest du tout bon!!
Etape 1 Création de la redirection
Début de la parade : il va nous falloir rediriger cette page erreur 404, pour cela vous devrez ajouter la ligne suivante dans votre fichier .htaccess :
.01 .02
| |
ErrorDocument 404 /erreur404.php
|
Etape 2 Création du code PHP
Création du fichier erreur404.php avec le code PHP :
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12
| |
<?php
if (ereg('^/page-([0-9]+).html$', $_SERVER['REDIRECT_URL'], $match)) {
//modification du code retour
header("Status: 200 OK", false, 200);
//alimentation du paramètre GET
$_GET['param'] = $match[1];
$_REQUEST['param'] = $match[1];
include('page.php');
}
?>
|
Etape 3 Création de la page réécrite
Création du fichier page.php avec ce code PHP :
.01 .02 .03 .04 .05 .06 .07 .08
| |
< ?php
echo hello mon parametre est : ;
echo $_GET[param] ;
?>
|
Etape 4 Mise en service du script
Ca chauffe !! Mettez lurl page-01.html dans la barre dadresse de votre navigateur et appuyer sur OK ;)
1° Le contenu de la page saffiche correctement, Eurêka !! Vive urlrewriting.fr ;)
2° Le contenu ne saffiche pas : Je regarde lanalyse ci dessous et jessaye de comprendre doù peux bien venir mon erreur. Si je rame trop, je viens vous voir sur le forum.
Analyse du code PHP
La première étape consiste à récupérer lurl avec $_SERVER['REDIRECT_URL']. Ensuite nous ferons un masque pour capturer lurl et analyser la chaine. Pour ceux qui connaissent lurewriting, nous allons procéder de la même manière mais avec une fonction PCRE. La seule différence est que $_SERVER['REDIRECT_URL'] retourne 1 slash (/) en sortie contrairement au moteur apache de réécriture qui nen retourne pas.
Important : Il ne faudra pas oublier de modifier le code retour 404 en 200 pour les moteurs de recherches !! Manquerais plus que notre page ne puisse pas être indexé par Google ou Yahoo !!
Rassurez vous, elle le sera ;)
.01 .02
| |
header("Status: 200 OK", false, 200);
|
Noubliez pas denvoyer les valeurs contenues dans le tableau associatif $_GET
$_GET : Contient les variables fournies par la chaîne URL.
Attention : Lexemple PHP ne tiens pas compte des magic quotes. Si vous désirez les utiliser vous devrez faire un code de ce genre (si page.php en tient compte et quelles sont actives) :
Remplacer :
$match[1]
Par :
addslashes($match[1])
Note :
Lexemple du script erreur404.php est équivalent à la règle suivante :
.01 .02
| |
RewriteRule ^page-([0-9]+).html$ /page.php?param=$1 [L]
|
© Copyright: Les tutoriels sont exclusifs et sont la propriétés des auteurs.
Reproduction interdite.