Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
apache:mod_rewrite [2011/08/27 02:12] – import - création Anael MOBILIAapache:mod_rewrite [2014/05/27 03:32] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-<style float-right>{{tag>XXX}}</style>+<style float-right>{{tag>apache mod_rewrite rewrite url referencement}}</style>
  
-<style float-left>{{:icones:page_web.png?nolink&70}}</style> +<style float-left>{{:icones:reload.png?nolink&70}}</style> 
-====== Titre_page ======+====== URL rewriting : améliorer son référencement ======
  
 //[[:|Retour à la liste des tutoriels]]// //[[:|Retour à la liste des tutoriels]]//
  
-<note tip>Présentation rapide.</note>+<note tip>Le mod rewrite permet d'utiliser des URL ne pointant pas sur des fichiers existants sur votre site.</note>
 <note>**Prérequis** <note>**Prérequis**
-  * Aucun prérequis pour ce tutoriel.+  * [[apache:installation_configuration|Avoir installé Apache.]]
 </note> </note>
 \\ \\
-===== grand1 ===== +===== Intérêt de la réecriture d'URL ===== 
-lorem ipsum+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 urlOr, http://anael.eu/ et http://www.anael.eu sont considérés comme 2 URL bien distinctes !
-===== Liens ===== +
-  * [[.:|Retour à la liste des tutoriels XXX]] +
-  * [[:|Retour à la liste des tutoriels]]+
  
-++__But : Uniformiser les url d'accès au site ([référencement|tag:référencement]) - mod [rewrite|tag:rewrite]__+++Je vais donc utiliser un module d'apache : le [[http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html|mod rewrite]] qui permet de modifier les urls des pages visitées.
  
-!!!! I) Préambule +===== Activation du mod rewrite ===== 
-Mon site web est accessible par les urls http://anael.eu et http://www.anael.eu . +Pour activer le mod rewrite, je vais utiliser la commande apache de gestion des mods a2enmod : 
- +<code bash>a2enmod rewrite</code>
-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 [[mod rewrite|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 : Le système va nous confirmer la bonne activation du module :
-///[bash+<code bash>Enabling module rewrite. 
-Enabling module rewrite. +Run '/etc/init.d/apache2 restart' to activate new configuration!</code>
-Run '/etc/init.d/apache2 restart' to activate new configuration! +
-///+
  
 Il convient de relancer apache afin qu'il prenne en compte la nouvelle configuration : Il convient de relancer apache afin qu'il prenne en compte la nouvelle configuration :
-///[bash+<code bash>/etc/init.d/apache2 restart</code>
-/etc/init.d/apache2 restart +
-///+
  
-!!!! III) Première tentative : activation du mod rewrite par .htaccess 
  
-Je vais tenter (infructueusementd'activer le mod rewrite par le biais d'un fichier .htaccess . +===== Première tentative : activation du mod rewrite par .htaccess ===== 
-''Ce § explique le contenu à rédiger pour effectuer la redirection, mais ne fonctionnera pas dans le fichier .htaccess !)''+Je vais tenter **infructueusement** d'activer le mod rewrite par le biais d'un fichier .htaccess . 
 +<note important>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 !</note>
  
-J'édite donc un fichier .htaccess situé dans le répertoire racine web (soit /var/vhosts/anael.eu/httpdocs+J'édite donc un fichier .htaccess situé dans le répertoire racine web (soit /var/www/anael.eu/www/
-///[bash+<code bash>nano /var/www/anael.eu/www/.htaccess</code>
-nano /var/www/vhosts/anael.eu/.htaccess +
-///+
  
 J'active le mod rewrite : J'active le mod rewrite :
-///[apache+<code apache>RewriteEngine On</code>
-RewriteEngine On +
-///+
  
-Je pose une condition à la ré-écriture d'url : toutes les urls qui __ne__ commencent __pas__ par www.anael.eu  +Je pose une condition à la ré-écriture d'url : toutes les urls qui **ne** commencent **pas** par www.anael.eu  
-///[apache+<code apache>RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC]</code> 
-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 ! [[http://www.siteduzero.com/tutoriel-3-14618-les-expressions-regulieres-partie-2-2.html|Voir doc. SdZ]]. 
-''A noter :'' +  * Les options de traitement sont indiquées entre **[]** (crochets). 
-* 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]. +  * 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)//
-* 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 : +L'instruction à réaliser si la condition précédente est vraie : 
-///[apache+<code apache>RewriteRule (.*) http://www.anael.eu/$1 [R=301,L,NE]</code> 
-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) 
-* Réecriture de l'url sous la forme http://www.anael.eu/ \[page demandée par l'utilisateur\] +  * L'option L indique qu'il s'agit de la dernière règle de réécriture d'URL 
-* 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 NE indique à Apache qu'il ne doit pas échapper les caractères spéciaux de la page demandée (tels % $ ; ,)
-* 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).+Une fois ce fichier sauvegardé, l'affichage de n'importe quelle page du site indique : //Erreur 500 / Internal Server Error//.
  
-Un affichage du fichiers d'erreur correspondant au site indique +Affichons le journal d'erreurs correspondant au site indiqué 
-///[bash+<code bash>nano /var/www/www/anael.eu/logs/error.log</code>
-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 .+<code apache>[Sun Sep 12 01:52:08 2010] [alert] [client 85.171.166.126] /var/www/anael.eu/www/.htaccess: RewriteEngine not allowed here</code>
  
-!!!! IV) Activation du mod rewrite dans le fichier de configuration du site +Voici les informations que l'on peut tirer de ce message : 
-Il convient de modifier le fichier de configuration apache du site afin de mettre en action le mod rewrite !+  * //[Sun Sep 12 01:52:08 2010]// : le moment auquel le problème a été rencontré 
 +  * //[alert]// : le niveau de l'erreur 
 +  * //[client 85.171.166.126]// : le visiteur ayant causé l'erreur //(moi en l'occurence)// 
 +  * ///var/www/anael.eu/www/.htaccess:// : le fichier ayant causé l'erreur 
 +  * //RewriteEngine not allowed here// : le message d'erreur
  
-///[bash] +On constate que je ne peux pas activer l'URL rewriting dans un fichier .htaccess. 
-nano /etc/apache2/sites-available/anael.eu +\\ 
-///+Supprimons donc le fichier .htaccess précédemment créé 
 +<code bash>rm /var/www/anael.eu/www/.htaccess</code>
  
-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éé !+===== 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 ! 
 + 
 +<code bash>nano /etc/apache2/sites-available/anael.eu</code> 
 + 
 +Ajouter les lignes précédemment expliquées //(avant la fermeture de balise </VirtualHost>)//
 +<code apache>RewriteEngine On 
 +RewriteCond %{HTTP_HOST} !www\.anael\.eu [NC] 
 +RewriteRule /(.*) http://www.anael.eu/$1 [R=301,L,NE]</code>
  
 Apache doit être relancé afin de prendre en compte la modification de configuration Apache doit être relancé afin de prendre en compte la modification de configuration
-///[bash+<code bash>service apache2 restart</code>
-service apache2 restart +
-///+
  
-Les urls de type http://anael.eu sont maintenant automatiquement converties dans le navigateur en http://www.anael.eu !+Les URL de type http://anael.eu sont maintenant automatiquement converties dans le navigateur en http://www.anael.eu ! 
 + 
 +\\ 
 +===== Liens ===== 
 +  * [[.:|Retour à la liste des tutoriels Apache]] 
 +  * [[:|Retour à la liste des tutoriels]]