
Appliquer une condition à plusieurs règles de réécriture
Information sur le code source
Enregistré le 03 Juil 2012 - Vu 12232 fois
 | Votre avis: |
|
| |
[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
|
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