Pseudo Mot de passe
fleche Inscription
fleche Mot de passe oublié ?
Informations Générales
Chargement en cours...
Nombre de Visites fleche [ 140383 ]
Votre IP fleche [ 38.103.63.16 ]
Vous êtes ici : Home Page Dossiers Serveur web URL Rewriting avec PHP
Imprimer Imprimer le document

Informations Membres

[195] Posts sur le forum
[177] Membres inscrits
Il y a en ligne :
  arrow 0 Membre
  arrow 0 Invité

fled Membre en ligne:
Aucun

Partenariat

Partenariat Vous pouvez aider ce site à évoluer, en contribuant à son développement. Proposez vos idées de cours et/ou dossiers. Rendez-vous dans « Partenariat » pour en savoir plus.


Nom de domaine

www.

Partenaires

L'URL Rewriting avec PHP

Cette technique avec comme recours le langage PHP, est très utile pour ceux qui veulent faire de la réécriture d'URL, chez un hébergeur comme free.fr, n'autorisant pas cette fonction avec .htaccess.

L'URL Rewriting permet d'avoir des liens avec un nom simple est standard pour chaque lien, ce qui permet un bon travail des robots des moteurs et donc vous permet d'avoir un bon référencement pour votre site.

Réécrire des URL dynamiques

Votre site dynamique comporte sûrement des URL de ce type :

http://votresite.com/index.php?rubrique1=photo&page=index
http://votresite.com/index.php?rubrique1=photo&rubrique2=vacance&page=index

Ce qui n'est pas très joli, difficilement mémorisable et finalement qui pose de réels problèmes d'indexation aux moteurs de recherche.

Nous allons donc réécrire ces URL d'une manière plus jolie.
De façon à avoir des URL de ce styles :

http://votresite.com/photo-index.php
http://votresite.com/photo-vacance-index.php

Pour commencer, nous aurons besoin de deux fichiers à la racine de votre site, .htaccess et erreur.php.
.htaccess est utilisé par le serveur, pour informer de la présence du fichier erreur.php.

Ce code est à insérer dans le fichier .htaccess :

ErrorDocument 404 /erreur.php

Explications:

Dès lors où nous allons demander une adresse, elle va être interprétée comme erronée, dû fait de sa forme.

/photo-index.php

Mais dès l'instant où nous aurons une erreur 404, nous allons la diriger vers un fichier erreur.php qui va gérer et reformater cette adresse.

Le script PHP à éditer dans le fichier erreur.php :

<?php
$url=$_SERVER['REQUEST_URI']; // On récupère l'adresse demandée

// Pour une forme /rubrique1-rubrique2-page.php
if(preg_match('#^/(.+)-(.+)-(.+)\.php$#', $url, $match)) 
	{
	// Récupèration des valeurs de l'expression régulière
	$rubrique1=$match[1]; // Le nom de la rubrique1 se trouve dans la 1ère parenthèse de l'expression
	$rubrique2=$match[2]; // Le nom de la rubrique2 se trouve dans la 2ème parenthèse de l'expression
	$page=$match[3]; // Le nom de la page se trouve dans la 3ème parenthèse

	// On modifie le code de statut HTTP
	header("HTTP/1.1 200 OK");

	// On inclut la page index.php et on termine le script
	include("index.php");
	exit();
	}
// Pour une forme /rubrique1-page.php
elseif(preg_match('#^/(.+)-(.+)\.php$#', $url, $match)) 
	{
	$rubrique1=$match[1];
	$page=$match[2];

	header("HTTP/1.1 200 OK");

	include("index.php");
	exit();
	}
else
	{echo "Cette page n'existe pas !";}
?>

Explications:

Examinons ensemble ce script.

  1. $url=$_SERVER['REQUEST_URI'];
    On récupère l'adresse URL, et on la range dans la variable "$url".
  2. if(preg_match('#^/(.+)-(.+)-(.+)\.php$#', $url, $match))
    Si l'URL à cette forme /rubrique1-rubrique2-page.php, on découpe celle-ci ($url) en plusieurs valeurs.
    Ces valeurs correspondent à chaque "(.+)\".
    -Pour la première valeur "(.+)", on prend tout ce qui se trouve entre le signe "/" et "-".
    -Pour la deuxième valeur "(.+)", on prend tout ce qui se trouve entre le signe "-" et "-".
    -Pour la troizième valeur "(.+)", on prend tout ce qui se trouve entre le signe "-" et ".php".
    Ces valeurs sont ensuite rangées dans un tableau appelé "match".
  3. $rubrique1=$match[1]; $rubrique2=$match[2]; $page=$match[3];
    On récupère les valeurs du tableau "match", et on les assignes à des variables.
  4. header("HTTP/1.1 200 OK");
    Ici on signale au serveur que l'URL à été identifiée, et qu'il peut oublier l'erreur 404 de départ.
  5. include("index.php");
    On inclut maintenant le fichier "index.php", avec ces nouvelles variables, pour qu'il traite notre demande.
  6. exit();
    On sort de notre script et de notre fichier "erreur.php", avec comme requête URL
    /index.php?rubrique1=(valeur1)&rubrique2=(valeur2)&page=(valeur3)

Et ainsi de suite pour les autres formes d'URL.

Haut de page