Comme vous devez le savoir, l'URL Rewriting traditionnel (avec des directives Apache) ne fonctionne pas chez Free.
Je vous propose, dans ce mini-tuto, une solution simple pour faire comme si l'URL Rewriting fonctionnait. C'est relativement simple, mais comme on dit toujours après coup : « Fallait y penser ». ^^
D'après cette URL et ces variables, on peut en déduire que la page demandée va parler de frites fines allongées préparées avec des pommes de terre à frites. Mon but est d'obtenir une URL comme ceci :
En réalité, tout ce qui se trouve après ce point d'interrogation est en quelque sorte le nom d'une variable get : la variable /allumettes-frite.html. L'URL exacte serait :
Dans un premier temps, il faut récupérer l'URL (enfin, ce qui se trouve après le point d'interrogation) :
<?php
$VariablesURL = $_SERVER['QUERY_STRING']; // Récupération de ce qu'il y a après le ?.
if (substr($VariablesURL, -5) == '.html') { // On enlève le .html s'il est présent.
$VariablesURL = substr($VariablesURL, 0, -5);
}
?>
On teste aussi la variable, via substr, pour savoir si .html est présent (en toute logique, oui). S'il est présent, on l'enlève.
Maintenant, il s'agit de décomposer la chaîne en deux morceaux. Pour cela je vais utiliser explode (ça fonctionne de la même façon que la méthode split() de JavaScript, pour ceux qui connaissent). Cette fonction coupe la chaîne et crée un tableau avec les valeurs. Je vais couper au niveau du /.
<?php
$Argument = explode('/', $VariablesURL);
?>
$Argument[0] contiendra /.
$Argument[1] contiendra allumettes-frite.
C'est bête, tu aurais pu utiliser substr aussi, non ?
Après ça, on va couper $Argument[1]. Les points de coupe seront les tirets (-) :
$SubArgument contiendra le tableau avec les différentes parties de $Argument[1].
Il ne vous reste plus qu'à tester $SubArgument[0] (avec des if ou un switch) pour savoir quelle page inclure (require pour un .php et readfile pour un .html) :
<?php
switch ($SubArgument[0]) {
case 'allumettes':
readfile('pages/types/frites_allumettes.html');
break;
case 'maison':
readfile('pages/types/frites_maison.html');
break;
default:
require('pages/accueil.php');
}
?>
Bien entendu, dans vos pages incluses, vous pouvez réutiliser $SubArgument[i] pour exécuter vos scripts. Dans mon exemple, $SubArgument[1] contient frites. Vous pouvez mettre autant de SubArguments que vous le voulez, mais essayez de ne pas vous emmêler les pinceaux. ;)
N'oubliez pas aussi de mettre des messages d'erreur s'il manque des choses. Je ne vous ai donné que le script de base. ;)