Utiliser $_GET pour avoir de bonnes URL pour le SEO
Voici un script qui permet d'avoir des URL réécrites et lisibles, en passant par le module "mod_rewrite" d'Apache et en appliquant une règle de redirection dans le fichier ".htaccess".
En développant votre propre site internet en PHP, il est possible d'avoir des URL optimisées pour le référencement. Il faut pour cela utiliser le module "mod_rewrite" d'Apache, appliquer une règle de redirection dans le fichier ".htaccess", puis développer un script PHP qui va interpréter les URL pour effectuer les traitements correspondants.
La première méthode consiste à rediriger toutes les URL vers un script unique (ici, "index.php") qui va traiter l'URL. Pour effectuer cette redirection, il suffit d'ajouter les lignes suivantes dans le fichier ".htaccess" :
RewriteEngine On
RewriteRule ^ index.phpCes lignes activent le module de réécriture, puis redirigent n'importe quelle URL vers le script "index.php".
Dans le fichier "index.php", il faut utiliser la variable globale $_SERVER pour récupérer l'URL du script demandé. Voici un exemple de script qui récupère les paramètres dans l'URL en suivant le caractère "/" :
$url =str_replace('index.php','', $_SERVER['PHP_SELF']);
$url = str_replace($url,'',$_SERVER['REQUEST_URI']);
//On décompose ensuite l'URL avec le caractère "/". Dans cet exemple,le premier élément correspond à la page, et les éléments suivants aux arguments.
$url= explode (' /',$url);
$page = array_shift($url);
foreach ($url as $val){
$arguments[] = urldecode($val);
}
Avec ce système, la page "http//www.monsite.fr/profil/toto/a-propos" sera ainsi découpée :
$page = "profil";
$arguments[0] = "toto";
$arguments[1] = "a-propos";
Si vous souhaitez utiliser des scripts différents selon l'URL, vous pouvez également ajouter des règles de réécriture différentes dans le fichier ".htaccess". Par exemple, pour l'URL précédente, ajoutez dans le fichier ".htaccess" la règle suivante :
RewriteRule ^profile/([a-zA-Z0-9_-]+)(|/)([a-zA-Z0-9_-]+)$ profil.php?utilisateur=$1&onglet=$2
Cette règle va être utilisée dans l'URL pour afficher le script "profil.php". Dans ce script, on récupérera les autres paramètres de la manière suivante :
$utilisateur = $_GET["utilisateur"] //Contient "toto"
$onglet = $_GET["onglet"] //Contient "a-propos"
Vous pouvez ensuite effectuer le traitement approprié dans votre script. Cette technique oblige à utiliser une nouvelle règle d'écriture à chaque fois que l'on ajoute un script dans le site, mais elle permet d'avoir plusieurs scripts pour gérer les URL, contrairement à l'unique script dans la solution précédente.