Tutorial - Comment rediriger toutes ses pages vers un index pour une réécriture d'URL simple
Pour avoir un bon référencement naturel sur les moteurs de recherche, j'ai décidé d'utiliser la réécriture d'URL pour Pixtiz.
Pour cela, il y a deux solutions :
- Faire son URL Rewriting directement dans le .htaccess grâce aux expressions régulières
- Rediriger tout son site vers une même page PHP et faire le traitement par extraction de l'URL
Pour des raisons de simplicité de code, j'ai décidé d'utiliser la deuxième solution.
En effet les expressions régulières sont difficiles à maîtriser et le traitement par PHP permet de gérer les erreurs plus facilement.
Le site étant hébergé chez 1&1 en hébergement mutualisé, il m'a fallu adapter le code pour que cela fonctionne.
Le fichier .htaccess final
Voici le fichier .htaccess utilisé sur Pixtiz pour la redirection
AddType x-mapp-php5 .php
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Les explications pas à pas
AddType x-mapp-php5 .php
Cette ligne est spécifique aux utilisateurs hébérgés chez 1and1. Elle permet d'utiliser PHP5 pour toutes les pages du site.
En effet, si j'utilise des fichiers dont l'extensions est simplement .php, 1and1 me bascule sur un moteur version 4 de php qui ne me permet
pas d'utiliser certaines fonctionnalités de PHP5 comme le support du SimpleXML.
Pour utiliser le moteur php5, il faudrait que je renomme toutes mes pages
en .php5 (c'est ce que m'a répondu le service clientèle 1and1). Mais il aurait alors fallu que je renomme tous mes fichiers et que je change tous mes liens.
Le AddType permet d'effectuer ce changement d'extension de manière transparente pour l'utilisateur et le developpeur.
Options +FollowSymlinks
L'option FollowSymlinks est aussi spécifique aux utilisateurs 1and1 mutualisés. Elle donne l'instruction au mod_rewrite de suivre les liens symboliques.
Si votre hébergeur ne le supporte pas, il se peut que cela vous génère une erreur 500. Dans ce cas, supprimez cette ligne.
RewriteEngine On
RewriteBase /
On active le RewriteEngine avec "RewriteEngine On". RewriteBase permet de spécifier la racine de votre réecriture un peu à la manière de
<base href="http://www.pixtiz.com/" /> dans un code html.
Ici, le simple slash ( / ) permet d'indiquer que tous mes fichiers ainsi que l'index sous dans le repertoire racine du site et pas dans un répertoire.
Bien sûr, vous devez modifier cette ligne en fonction de votre site et de son arborescence.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Ces deux lignes indiquent au RewriteEngine qu'il ne doit pas rediriger vers la page unique si la requête indique un fichier ou un répertoire.
RewriteRule ^(.*)$ index.php [L,QSA]
C'est ici que nous redirigeons toutes les pages du site. Grâce à l'expression régulière ^(.*)$, on sélectionne toutes les pages du site.
Le drapeau ( flag ) [L,QSA] est une condition d'arrêt qui n'autorise pas le mod_rewrite à executer d'autres RewriteRules.
Toutes les pages appelées sont donc redirigées vers le fichier index.php présent à la racine de votre espace mutualisé.
Dans un prochain tutoriel, je vous montrerai comment effectuer une réecriture d'url en PHP avec de simples if et switch ;).