Pseudo Mot de passe
fleche Inscription
fleche Mot de passe oublié ?
Informations Générales
Chargement en cours...
Nombre de Visites fleche [ 140379 ]
Votre IP fleche [ 38.103.63.16 ]
Vous êtes ici : Home Page Dossiers Serveur web URL Rewriting avec APACHE
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 APACHE

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.

Installation dans APACHE

Pour utiliser le module de réecriture des URL à la volée, votre hébergeur doit avoir activé ce MOD, ou vous devez avoir accès aux paramêtres de configuration d'Apache (fichier httpd.conf).

Pour activer ce module, deux cas se présentent.

  1. Si votre serveur Apache est en version 1 :
    Vous devez décommenter les 2 lignes suivantes en enlevant le # en début de ligne :

    LoadModule rewrite_module modules/mod_rewrite.so
    AddModule mod_rewrite.c
    
  2. Si votre serveur Apache est en version 2 :
    Vous devez décommenter la ligne suivante en enlevant le # en début de ligne :

    LoadModule rewrite_module modules/mod_rewrite.so
    

    Et modifier ceci :

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All
    

Vous pouvez désormais tester si le module est actif ou non.
Commencez par créer une page "test.php" à la racine de votre serveur.
Vous y insererez un simple texte.

Créez un fichier .htaccess, placé dans le même répertoire, ou vous y insererez le code suivant :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test\.html$ /test.php

Il ne vous reste plus qu'à entrer l'URL suivante dans votre navigateur favori : http://votresite.com/test.html, et vous devriez voir apparaitre le texte de la page "test.php".
Et voila... l' URL test.html est desormais réecrite en test.php.
Si par malheur, une erreur 404 (page introuvable) ou pire 500 (Erreur du serveur) apparaissait, il y a de fortes chances pour que ce module ne soit pas actif chez votre hébergeur.

Réécrire des URL dynamiques

Votre site dynamique comporte surement des URL du genre :

http://votresite.com/frames.php?page=index&view=source
http://votresite.com/photo.php?album=12&id=1

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.
En effet la plupart ne prennent en compte qu'un nombre limité de paramètres dans l' URL, voir qui les ignorent complètement !

Les codes sont à insérer dans le fichier .htaccess, et utilisent Les Expressions Régulières.

Pour nos besoins, il est suffisant de savoir que :

  • ^ : indique que nous sommes en début de ligne, ou au début de la chaîne de caractères. Cependant, entre crochets, la signification est différente.
  • $ : indique lui que nous sommes en fin de ligne, ou de chaîne.
  • . : remplace tout caractère inconnu.
  • \ : échape un caractère utilisé dans la syntaxe regex. Par exemple, pour utiliser un point, la syntaxe est \.
  • [0-9]+ : fait référence à un ou plusieurs chiffres à la suite.
  • [a-z]+ : fait référence à une ou plusieurs lettres à la suite.
  • [a-z0-9]+ : fait référence à un ou plusieurs caractères (lettres et chiffres confondus).
  • * : fait référence à n'importe quelle suite de caractères (de 0 caractère jusqu'à l'infini).
  • + : fait référence à n'importe quelle suite de caractères (de 1 caractère jusqu'à l'infini).
  • () : les parenthèses permettent de "capturer" ce qui se trouve à l'intérieur afin de le rappeler dans la suite de la directive : le contenu du premier couple de parenthèses sera appelé par $1, le second par $2, etc...

Nous allons donc réécrire ces URL d'une manière plus simple.

  • http://votresite.com/frames.php?page=index&view=source
      deviendra : http://votresite.com/index.source.html

    Code:
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^(.+)\.(.+)\.html$ /frames.php?page=$1&view=$2 [L]
    
  • http://votresite.com/photo.php?album=12&id=1
      deviendra : http://votresite.com/photo/12/1

    Code:
    Options +FollowSymlinks
    RewriteEngine on 
    RewriteRule ^([0-9]+)/([0-9]+)$ /photo.php?album=$1&id=$2 [L]
    
Note : L'option [L] en fin de ligne indique à Apache qu'il peut s'arrêter de comparer dès qu'il trouve le résultat.

[Voir notre Génerateur d'URL Rewriting]

Nous avons vu comment ça se passe du côté du serveur mais au niveau du code PHP il faut maintenant avoir les bonnes url, c'est à dire au format .html.
Pour cela il y a deux manières, la première c'est que vous mettiez les bonnes url directement dans votre code, soit utiliser une fonction PHP inverse de celle du .htaccess.
Cet deuxième solution a l'avantage d'être extrêmement souple, si vous changez vos règles ou si le support de l'URL Rewriting est désactivé du serveur.

Voici la fonction PHP :
function URLRewriting($url)
    {
    if(eregi("(.*).php(.*)",$url,$regs))
        {
        $monurl=$regs[1];
        $geturl=$regs[2];
        while(eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs))
            {
            $geturl=$regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
            }
        $url=$monurl.$geturl;
        }
    elseif(eregi("(.*).php",$url,$regs))
        {
        $url=$regs[1];
        }
    return $url.".html";
    }

Cette fonction est écrite pour ne gérer que les url des fichiers .PHP en entrée, vous pouvez l'enrichir selon vos besoins.

Haut de page