Bouts de Codes

Appliquer une condition à plusieurs règles de réécriture

Information sur le code source

Enregistré le 03 Juil 2012 - Vu 12232 fois
Code source zippé: télécharger le zip
Impression: imprimer le code
  • Sociale bookmarking: Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Partage ce code sur Facebook
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Appliquer une condition à plusieurs règles de réécriture
Votre avis: 
 
Ecrit par :  forty
Site de l'auteur voir
[9] sources en Apache voir
 

Description du code source

Informations sur le code source

Une directive RewriteCond ne s'appliquant qu'à la RewriteRule qui suit immédiatement, il est parfois gênant de devoir répéter une condition plusieurs fois. Cela alourdit le fichier .htaccess pour rien.

Pour éviter cette contrainte il est possible d'utiliser une astuce qui consiste à inverser la condition pour ne pas appliquer nos règles de réécriture. Nous utiliseront pour cela le Flag SKIP qui permet de sauter un certain nombre de règles de réécriture (en fonction du nombre en paramètre).

Grâce à ce type d'écriture il est même possible de simuler une structure IF - ELSE en utilisant une deuxième réécriture avec le drapeau SKIP.

Nous allons voir un exemple qui permet de n'appliquer des redirections que si le nom de domaine correspond à une ancienne version du site. Dans ce cas là nous redirigerons vers la bonne page sur le nouveau site. Ce cas est utile quand les deux domaines pointent vers le même répertoire et donc partagent le même fichier .htaccess.

Code Source



.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
.36
.37
.38
.39
.40
.41
.42
.43
.44
.45
 

################################################################################
#                                                                              #
#                         __                   _ __  _                         #
#               __ ______/ /______ _    ______(_) /_(_)__  ___ _               #
#              / // / __/ / __/ -_) |/|/ / __/ / __/ / _ \/ _ `/               #
#              \_,_/_/ /_/_/  \__/|__,__/_/ /_/\__/_/_//_/\_, /                #
#                                                        /___/                 #
#                                                                              #
#                                                                              #
################################################################################
#                                                                              #
# Titre          : Appliquer une condition à plusieurs règles de...            #
#                                                                              #
# URL            : /scripts92-Apache.htm             #
# Auteur         : forty                                                       #
# Date édition   : 03 Juil 2012                                                #
# Website auteur : http://www.toplien.fr/                                      #
#                                                                              #
################################################################################

# Si le nom de domaine est différent de l'ancien site
RewriteCond %{HTTP_HOST} !^www\.old-site\.fr$
# Alors saute les 3 règles suivantes
RewriteRule .* - [S=3]
# Ces 3 règles ne sont appliquées que si le domaine correspond à l'ancien site
RewriteRule ^/url_old-1.html http://www.new-site.fr/url_new-1.html [NC,R=301]
RewriteRule ^/url_old-2.html http://www.new-site.fr/url_new-2.html [NC,R=301]
RewriteRule ^/url_old-3.html http://www.new-site.fr/url_new-3.html [NC,R=301]
# Fin du IF

#Avec une structure IF - ELSE :
# Si le nom de domaine est différent de l'ancien site
RewriteCond %{HTTP_HOST} !^www\.old-site\.fr$ [NC]
# Alors saute les 4 règles suivantes (les 3 redirections + le SKIP)
RewriteRule .* - [S=4]
# Ces 3 règles ne sont appliquées que si le domaine correspond à l'ancien site
RewriteRule ^/url_old-1.html http://www.new-site.fr/url_new-1.html [R=301]
RewriteRule ^/url_old-2.html http://www.new-site.fr/url_new-2.html [R=301]
RewriteRule ^/url_old-3.html http://www.new-site.fr/url_new-3.html [R=301]
# Cette règle permet de sauter la règle de réécriture du ELSE
RewriteRule .* - [S=1]
# Sinon applique cette règle
RewriteRule ^(.*)$ /index.php?file=$1 [L]
# Fin du IF - ELSE
Ajouter un commentaire

RSS
snippets


RSS
commentaires

 
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
Librairie

Langages de programmation

La librairie est ouverte à tous et elle est accès principalement sur les langages Snippets. Vous trouverez aussi d'autres langages de programmation tel que le CSS, HTML, AJAX, ASP.. Plus de 300 références facilement accessibles. Visiter

  • Apache Tomcat 6 - Guide d administration du serveur Java EE sous Windows et Linux
  • LAMP (Linux, Apache, MySQL, PHP) Pack 4 volumes : Maîtrisez vos applications Web en Open Source
  • Montez votre serveur de A à Z
  • Précis & Concis : Apache
  • Apache 2.0 : Guide de l'administrateur Linux
  • Apache : La Référence
  • LAMP (Linux, Apache, MySQL, PHP) - Coffret de 4 livres : Maîtrisez vos applications Web Open Source [Nouvelles versions]
  • PHP 5.2 et APACHE 2 - Maîtrisez le développement et le déploiement de votre site web interactif [Nouvelle version]
  • Apache (version 2) : Installation, administration et sécurisation
  • Apache en action