Table des matières

URL rewriting : améliorer son référencement

Retour à la liste des tutoriels

Le mod rewrite permet d'utiliser des URL ne pointant pas sur des fichiers existants sur votre site.


Intérêt de la réecriture d'URL

Mon site web est accessible par les URL http://anael.eu et http://www.anael.eu .

Afin d'optimiser le référencement par les robots des métamoteurs de recherche, il convient que chaque contenu ne soit accessible par une seule url. Or, http://anael.eu/ et http://www.anael.eu sont considérés comme 2 URL bien distinctes !

Je vais donc utiliser un module d'apache : le mod rewrite qui permet de modifier les urls des pages visitées.

Activation du mod rewrite

Pour activer le mod rewrite, je vais utiliser la commande apache de gestion des mods a2enmod :

a2enmod rewrite

Le système va nous confirmer la bonne activation du module :

Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Il convient de relancer apache afin qu'il prenne en compte la nouvelle configuration :

/etc/init.d/apache2 restart

Première tentative : activation du mod rewrite par .htaccess

Je vais tenter infructueusement d'activer le mod rewrite par le biais d'un fichier .htaccess .

Cette partie explique le contenu à rédiger pour effectuer la redirection, mais ne fonctionnera pas dans le fichier .htaccess !)
Le but de cette partie est d'expliquer une méthodologie de recherche d'erreurs !

J'édite donc un fichier .htaccess situé dans le répertoire racine web (soit /var/www/anael.eu/www/)

nano /var/www/anael.eu/www/.htaccess

J'active le mod rewrite :

RewriteEngine On

Je pose une condition à la ré-écriture d'url : toutes les urls qui ne commencent pas par www.anael.eu

RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC]

A noter :

L'instruction à réaliser si la condition précédente est vraie :

RewriteRule (.*) http://www.anael.eu/$1 [R=301,L,NE]

Une fois ce fichier sauvegardé, l'affichage de n'importe quelle page du site indique : Erreur 500 / Internal Server Error.

Affichons le journal d'erreurs correspondant au site indiqué :

nano /var/www/www/anael.eu/logs/error.log
[Sun Sep 12 01:52:08 2010] [alert] [client 85.171.166.126] /var/www/anael.eu/www/.htaccess: RewriteEngine not allowed here

Voici les informations que l'on peut tirer de ce message :

On constate que je ne peux pas activer l'URL rewriting dans un fichier .htaccess.
Supprimons donc le fichier .htaccess précédemment créé

rm /var/www/anael.eu/www/.htaccess

Activation du mod rewrite dans le fichier de configuration du site

Nous allons donc modifier le fichier de configuration Apache du site anael.eu afin de mettre en action le mod rewrite !

nano /etc/apache2/sites-available/anael.eu

Ajouter les lignes précédemment expliquées (avant la fermeture de balise </VirtualHost>) :

RewriteEngine On
RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC]
RewriteRule /(.*) http://www.anael.eu/$1 [R=301,L,NE]

Apache doit être relancé afin de prendre en compte la modification de configuration

service apache2 restart

Les URL de type http://anael.eu sont maintenant automatiquement converties dans le navigateur en http://www.anael.eu !


Liens