Mod_Rewrite Le couteausuisse - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Mod_Rewrite Le couteausuisse

Description:

Il y aura obligation de modifier les sources de vos pages web, pour g n rer en interne le ... Quel est le format actuel des URLs ? - combien de variables ... – PowerPoint PPT presentation

Number of Views:71
Avg rating:3.0/5.0

less

Transcript and Presenter's Notes

Title: Mod_Rewrite Le couteausuisse


1
Mod_RewriteLe  couteau-suisse 
  • La réécriture dURLs
  • au service du
  • référencement.

2
Attention aux pièges !
  • Il y aura obligation de modifier les sources de
    vos pages web, pour générer en interne le nouveau
    format dURLs.- suppose certaines compétences
    en programmation
  • Il faut donc bien réfléchir avant de se lancer
    dans laventure et planifier le travail à
    effectuer !

3
Réfléchissons ensemble
  • Quel serait le gain espéré ?- Peut-on espérer
    un meilleur positionnement du site ?- Peut-on
    espérer avoir plus de pages indexées ?- Mon
    PageRank peut-il augmenter ?
  • Quel est le format actuel des URLs ?- combien
    de variables a-t-on dans lURL ?- ce nombre
    peut-il varier ? (quantité, ordonnancement)- la
    génération des URLs est-elle centralisée dans le
    code ?

4
Quelques cas dutilisation
  • Voyons ensemble quelques cas dutilisation de
    mod_rewrite qui permettront une meilleure
    compréhension du mécanisme de la réécriture
    dURLs.

5
Quelques cas dutilisation
  • Voyons ensemble quelques cas dutilisation de
    mod_rewrite qui permettront une meilleure
    compréhension du mécanisme de la réécriture
    dURLs.
  • Posons notre première ligne

RewriteEngine On
6
Un nom  canonique 
  • Vous souhaitez que vos pages soient toujours
    accédées sous
  • http//www.example.com/
  • plutôt que
  • http//example.com/

7
Un nom  canonique 
RewriteEngine On RewriteCond HTTP_HOST
!www\.example\.com NC RewriteCond HTTP_HOST
! RewriteRule /(.) http//www.example.com/1
L,R
8
Un nom  canonique 
RewriteEngine On RewriteCond HTTP_HOST
!www\.example\.com NC RewriteCond HTTP_HOST
! RewriteRule /(.) http//www.example.com/1
L,R
  • Explication des règles
  • Si le nom du HOST nest pas www.example.com
  • Et si le nom du HOST nest pas  vide  ou
     indéfini  (le AND est implicite entre les
    conditions )
  • on réécrit lURL vers www.example.com

9
En présence de sous-domaines
RewriteEngine On RewriteCond HTTP_HOST
example\.com NC RewriteRule /(.)
http//www.example.com/1 L,R301
10
En présence de sous-domaines
RewriteEngine On RewriteCond HTTP_HOST
example\.com NC RewriteRule /(.)
http//www.example.com/1 L,R301
  • Dans ce cas, on vérifie simplement si le domaine
    demandé est example.com et nous navons de ce
    fait plus de raison de tester un nom de domaine
     vide .
  • Notez la disparition du signe  !  qui avait
    pour effet dinverser le test.
  • Si le domaine est example.com
  • Alors
  • On réécrit lURL vers www.example.com/ avec une
    entête 301

11
Ce que lon retiendra pour linstant
  • Les notations 1,29 sont des
     références-arrières  qui correspondent aux
    expressions mises entre parenthèses en premier
    argument de la règle.

12
Ce que lon retiendra pour linstant
  • Les notations 1,29 sont des
     références-arrières  qui correspondent aux
    expressions mises entre parenthèses en premier
    argument de la règle.
  • Les drapeaux en fin de règle qui permettent
    daffiner le comportement de celle-ci (R
    301,NC,L,QSA)

13
Ce que lon retiendra pour linstant
  • Les notations 1,29 sont des
     références-arrières  qui correspondent aux
    expressions mises entre parenthèses en premier
    argument de la règle.
  • Les drapeaux en fin de règle qui permettent
    daffiner le comportement de celle-ci (R
    301,NC,L,QSA)
  • Les variables serveur les plus courantes que lon
    peux tester en cas de réécriture conditionnelle
    (HTTP_HOST, HTTP_USER_AGENT, HTTP_REFERER,
    REMOTE_ADDR, SCRIPT_FILENAME, QUERY_STRING )

14
Ce que lon retiendra pour linstant
  • Les notations 1,29 sont des
     références-arrières  qui correspondent aux
    expressions mises entre parenthèses en premier
    argument de la règle.
  • Les drapeaux en fin de règle qui permettent
    daffiner le comportement de celle-ci (R
    301,NC,L,QSA)
  • Les variables serveur les plus courantes que lon
    peux tester en cas de réécriture conditionnelle
    (HTTP_HOST, HTTP_USER_AGENT, HTTP_REFERER,
    REMOTE_ADDR, SCRIPT_FILENAME, QUERY_STRING )
  • Les caractères et qui permettent de définir
    les limites de lexpression

15
Un exercice pas très compliqué !
  • Énonçons ces conventions
  • Un point décimal  .  signifie nimporte quel
    caractère
  • Un signe    signifie zéro ou plusieurs
    instances de ce qui précède comme le signe
       signifie au moins une instance.
  • Un signe  ?  marque lélément qui le précède
    comme facultatif
  • Un signe    signifie OU (logical OR)
  • Les parenthèses permettent de grouper les
    éléments

16
Un exercice pas très compliqué !
  • Énonçons ces conventions
  • Un point décimal  .  signifie nimporte quel
    caractère
  • Un signe    signifie zéro ou plusieurs
    instances de ce qui précède comme le signe
       signifie au moins une instance.
  • Un signe  ?  marque lélément qui le précède
    comme facultatif
  • Un signe    signifie OU (logical OR)
  • Les parenthèses permettent de grouper les
    éléments
  • Que peut donc signifier cette simple règle ?

RewriteRule .\.(gifjpe?gpngcssjs) - L
17
La réponse est
RewriteRule .\.(gifjpe?gpngcssjs) - L
  • Une chaîne aléatoire comprenant au moins un
    caractère .
  • Suivie dun point décimal \.
  • Suivie dun groupe de lettres comprenant gif,
    jpg, jpeg, png, rss ou js
  • Ne sera pas réécrite - (ça cétait nouveau !)
  • Ensuite on quitte le mécanisme pour cette
    expression L

18
La réponse est
RewriteRule .\.(gifjpe?gpngcssjs) - L
  • Une chaîne aléatoire comprenant au moins un
    caractère .
  • Suivie dun point décimal \.
  • Suivie dun groupe de lettres comprenant gif,
    jpg, jpeg, png, rss ou js
  • Ne sera pas réécrite - (ça cétait nouveau !)
  • Ensuite on quitte le mécanisme pour cette
    expression L

En résumé cette règle évite la réécriture pour
les fichiers images, Javascript et css ! Pourquoi
donc ?
19
Une règle qui ne fait rien ?
  • Nous avons vu dans lexemple précédent une règle
     inutile  qui ne fait rien.
  • Pourquoi dire à mod_rewrite de  ne rien faire ?
  • Tout simplement pour éviter de passer à travers
    un  chapelet  de règles pour les fichiers qui
    ne doivent pas être réécrits.
  • Cela permet déconomiser les ressources du
    serveur si on met cette règle au début du fichier
    .htaccess
  • Il faut toujours garder ces  économies  à
    lesprit !

20
Jour ou nuit ?
  • Si vous souhaitez présenter des pages différentes
    selon lheure de la visite, cest très simple à
    mettre en place

RewriteEngine on RewriteCond TIME_HOURTIME_M
IN gt0800 RewriteCond TIME_HOURTIME_MIN
lt2000 RewriteRule index\.html index.jour.html
L RewriteRule index\.html index.nuit.html L
Attention les conditions sont enchaînées avec un
 OU  logique et ne sappliquent quà la
première règle qui les suit.
21
Pour plus de clarté
RewriteEngine on RewriteCond TIME_HOURTIME_
MIN gt0800 RewriteCond TIME_HOURTIME_MIN
lt2000 RewriteRule index\.html index.jour.html
L RewriteRule index\.html index.nuit.html L
Ceci ne présente aucune différence avec la règle
de la page précédente, mais les lignes vides
permettent de mieux visualiser la logique des
réécritures. Prenez tout de suite de bonnes
habitudes !
22
Contrer les  voleurs dImages  ?
  • Votre site est riche dimages et vous ne voulez
    plus que les squatteurs du Web sen emparent et
    les affichent sur leurs sites.

RewriteCond HTTP_REFERER ! RewriteCond
HTTP_REFERER !http//www.example.com/. NC
RewriteRule .\.(gifjpe?gpng) - F
23
Contrer les  voleurs dImages  ?
  • Votre site est riche dimages et vous ne voulez
    plus que les squatteurs du Web sen emparent et
    les affichent sur leurs sites.

RewriteCond HTTP_REFERER ! RewriteCond
HTTP_REFERER !http//www.example.com/. NC
RewriteRule .\.(gifjpe?gpng) - F
Si le référant est défini et sil est différent
de http//www.example.com/ on réécrit toutes les
images en présentant une entête 403 F.
24
Bloquer les robots indélicats ?
  • Certains robots sont vraiment envahissants et peu
    respectueux du fichier robots.txt, autant leur
    interdire laccès au site.

RewriteCond HTTP_USER_AGENT Gigabot
NC,ORRewriteCond HTTP_USER_AGENT Xenu\
Link\ Sleuth NC,ORRewriteCond
HTTP_USER_AGENT HTTrack NC,ORRewriteCond
HTTP_USER_AGENT PhpDig NC,ORRewriteCond
HTTP_USER_AGENT WebCopier NC,ORRewriteRule
. - F
25
Redirection interne ou externe ?
  • Il y a une différence importante entre

RewriteRule ancien\.html nouveau.html
et
RewriteRule ancien\.html nouveau.html R
Elle ne se verra quau niveau de ladresse
apparaissant dans la barre du navigateur.La
première expression affichera ancien.html, alors
que la seconde affichera nouveau.html grâce à la
redirection externe due au drapeau R. A vous de
définir ladresse qui sera affichée par le
navigateur !
26
Lutilisation de RewriteMap
On peut facilement interdire laccès à une liste
de hosts ou dIPs
RewriteMap hosts-deny txt/chemin/vers/fichier/h
osts.deny RewriteCond hosts-denyREMOTE_HOST
NOT-FOUND !NOT-FOUND OR RewriteCond
hosts-denyREMOTE_ADDRNOT-FOUND
!NOT-FOUND RewriteRule /. - F
Avec le fichier hosts.deny suivant
193.102.180.41 -bsdti1.sdm.de -
192.176.162.40 -66.249.65.207 -
27
Lutilisation de RewriteMap
On peut facilement interdire laccès à une liste
de hosts ou dIPs
RewriteMap hosts-deny txt/chemin/vers/fichier/h
osts.deny RewriteCond hosts-denyREMOTE_HOST
NOT-FOUND !NOT-FOUND OR RewriteCond
hosts-denyREMOTE_ADDRNOT-FOUND
!NOT-FOUND RewriteRule /. - F
Avec le fichier hosts.deny suivant
Attention Le fichier hosts.deny nest pas une
liste, mais une  map . Il faut donc
impérativement quil contienne un second
argument, même si comme ici il na pas de
signification particulière ! Mod_rewrite
lanalysera en recherchant des couples clé-valeur.
193.102.180.41 -bsdti1.sdm.de -
192.176.162.40 -66.249.65.207 -
28
Lutilisation de RewriteMap
On peut facilement interdire laccès à une liste
de hosts ou dIPs
RewriteMap hosts-deny txt/chemin/vers/fichier/h
osts.deny RewriteCond hosts-denyREMOTE_HOST
NOT-FOUND !NOT-FOUND OR RewriteCond
hosts-denyREMOTE_ADDRNOT-FOUND
!NOT-FOUND RewriteRule /. - F
Avec le fichier hosts.deny suivant
Attention Le fichier hosts.deny nest pas une
liste, mais une  map . Il faut donc
impérativement quil contienne un second
argument, même si comme ici il na pas de
signification particulière ! Mod_rewrite
lanalysera en recherchant des couples clé-valeur.
193.102.180.41 -bsdti1.sdm.de -
192.176.162.40 -66.249.65.207 -
Faites très attention aux adresse que vous
renseignez !
29
Limpact sur le référencement
Une URL réécrite peut contenir des mots clés
utiles au référencement http//www.lisons.info/H
ayes-Billy-auteur-46.php Pour retrouver
facilement la fiche de lauteur de  Midnight
Express , portant le numéro 46, de même que
celles de tous les auteurs de la base, il suffit
dune règle de réécriture simple
RewriteRule auteur-(0-9)\.php
auteur.php?id1 QSA,L
30
Limpact sur le référencement
Une URL réécrite peut contenir des mots clés
utiles au référencement http//www.lisons.info/H
ayes-Billy-auteur-46.php Pour retrouver
facilement la fiche de lauteur de  Midnight
Express , portant le numéro 46, de même que
celles de tous les auteurs de la base, il suffit
dune règle de réécriture simple
RewriteRule auteur-(0-9)\.php
auteur.php?id1 QSA,L
Le résultat ne se fait pas attendre bien
longtemps .
31
Cest magique, non ?
32
Cest fini pour aujourdhui !
Vous en avez tous suffisamment découvert
aujourdhui pour vous lancer avec prudence dans
la réécriture dURLs. La documentation sur ce
sujet est abondante, mais peu darticles existent
en langue française. Quelques articles sont
accessibles sur Webmaster-Hub, notamment
 Mod_rewrite, ou la réécriture dURLs à la
volée , ou encore  La réécriture dURLs
récursive  que nous aborderont très certainement
une prochaine fois Ils vous permettront de
plonger plus avant dans ce sujet passionnant
! Merci à tous !
Write a Comment
User Comments (0)
About PowerShow.com