Ceci est une ancienne révision du document !


Titre_page

Retour à la liste des tutoriels

Présentation rapide.
Prérequis
  • Aucun prérequis pour ce tutoriel.


grand1

lorem ipsum


Liens

++But : Uniformiser les url d'accès au site ([référencement|tag:référencement]) - mod [rewrite|tag:rewrite]++

!!!! I) Préambule Mon site web est accessible par les urls 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 urls bien distinctes !

Je vais donc utiliser un module d'apache : le http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html|en qui permet de modifier les urls des pages visitées.

!!!! II) Activation du mod rewrite Pour activer le mod rewirte, je vais utiliser la commande apache de gestion des mods a2enmod : /[bash] a2enmod rewrite /

Le système va nous confirmer la bonne activation du module : /[bash] 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 : /[bash] /etc/init.d/apache2 restart /

!!!! III) 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 . Ce § explique le contenu à rédiger pour effectuer la redirection, mais ne fonctionnera pas dans le fichier .htaccess !)

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

J'active le mod rewrite : /[apache] RewriteEngine On /

Je pose une condition à la ré-écriture d'url : toutes les urls qui ne commencent pas par www.anael.eu /[apache] RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC] / A noter : * La chaîne est traitée comme une expression régulière, il convient donc d'échapper le caractère . (point) afin qu'il ne soit pas traité comme un joker ! [[Voir doc. sdz|http://www.siteduzero.com/tutoriel-3-14618-les-expressions-regulieres-partie-2-2.html|fr]. * Les options de traitement sont indiquées entre [] (crochets). * L'option NC signifie que la condition n'est pas sensible à la casse (anael.eu ; ANAEL.EU ; aNaEl.eU seront traitées de la même manière)

Et voici l'instruction à réaliser si la condition précédente est vraie : /[apache] RewriteRule (.*) http://www.anael.eu/$1 [R=301,L,NE] / * Réecriture de l'url sous la forme http://www.anael.eu/ \[page demandée par l'utilisateur\] * L'option R=301 indique qu'une réponse 301 (page has moved) va être retournée au visiteur en même temps que la nouvelle url (permet de conserver le référencement par exemple) * L'option L indique qu'il s'agit de la dernière règle (de réécriture d'url) * L'option NE indique à apache qu'il ne doit pas échapper les caractères spéciaux de la page demandée (tels % $ ; ,)

Une fois ce fichier sauvegardé, l'affichage d'une page du site indique une erreur 500 (Erreur 500 / Internal Server Error).

Un affichage du fichiers d'erreur correspondant au site indique : /[bash] nano /var/www/vhosts/anael.eu/logs/error.log / /[apache] [Sun Sep 12 01:52:08 2010] [alert] [client 85.171.166.126] /var/www/vhosts/anael.eu/httpdocs/.htaccess: RewriteEngine not allowed here /

Clairement la configuration apache du site anael.eu n'autorise pas la modification des paramètres de l'url rewrite du fichier de configuration apache à travers de fichiers .htaccess .

!!!! IV) Activation du mod rewrite dans le fichier de configuration du site Il convient de modifier le fichier de configuration apache du site afin de mettre en action le mod rewrite !

/[bash] nano /etc/apache2/sites-available/anael.eu /

Ajouter les lignes précédements expliquées (avant la fermeture de balise </VirtualHost>) : /[apache] RewriteEngine On RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC] RewriteRule /(.*) http://www.anael.eu/$1 [R=301,L,NE] /

On doit maintenant supprimer le fichier .htaccess précédemment créé !

Apache doit être relancé afin de prendre en compte la modification de configuration /[bash] service apache2 restart /

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