Bouts de Codes

Règle de réécriture avec plus de 9 paramètres

Information sur le code source

Enregistré le 07 Juil 2008 - Vu 12075 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 Règle de réécriture avec plus de 9 paramètres
Votre avis: 
 
Ecrit par :  admin
[66] sources en Apache voir
 

Description du code source

Informations sur le code source

Il n’est pas possible d’avoir plus de 9 rétroréférences avec le motif d’une RewriteRule. Ainsi $10 ne correspond pas à la dixième rétroréférence mais correspond à $1 suivi d’un 0.

Pour contourner le problème deux solutions sont possibles. La première est de regrouper les motifs pour faire le traitement en php (avec par exemple l’utilisation de la fonction explode).
La deuxième solution consiste à utiliser les rétroréférences de la RewriteCond que l’on va ajouter juste avant notre RewriteRule. C’est cette dernière solution qui est décrite ci-dessous.

Il est possible d’aller jusqu’à 9+9=18 paramètres avec cette solution en utilisant les 9 rétroréférences de la RewriteCond (%1 à %9) et les 9 rétroréférences de la RewriteRule ($1 à $9).

Nous avons par exemple l’url suivante contenant 10 paramètres notés de p1 à p10 :
/page.php?p1=aaa&p2=bbb& … &p10=jjj
que nous souhaitons réécrite en :
/page-aaa-bbb- … -jjj.html

Une astuce consiste à utiliser la rétroréférence $0 comme chaîne de test de la RewriteCond. Elle correspond au motif complet de notre RewriteRule. En d’autre terme c’est égal à l’url complète : page-aaa-bbb- … - jjj.html
Le motif de la condition permet de capturer le 10ème paramètre. Le paramètre p10 est alimenté avec la rétroréférence %1. Les 9 premiers paramètres sont capturés par le motif de la règle. Les paramètres de p1 à p9 sont alimentés avec les rétroréférences notées de $1 à $9.

Remarque : La probabilité pour que vous ayez vraiment besoin de ce code est excessivement faible. Il n'est même pas recommandé de l'utiliser car il y a un risque qu’une telle url soit considérée comme du spam. Ce code peut par contre être utilisé dans le cadre d’un intranet ou dans la partie administration.

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
 

################################################################################
#                                                                              #
#                         __                   _ __  _                         #
#               __ ______/ /______ _    ______(_) /_(_)__  ___ _               #
#              / // / __/ / __/ -_) |/|/ / __/ / __/ / _ \/ _ `/               #
#              \_,_/_/ /_/_/  \__/|__,__/_/ /_/\__/_/_//_/\_, /                #
#                                                        /___/                 #
#                                                                              #
#                                                                              #
################################################################################
#                                                                              #
# Titre          : Règle de réécriture avec plus de 9 paramètres               #
#                                                                              #
# URL            : http://www.urlrewriting.fr/scripts68-Apache.htm             #
# Auteur         : admin                                                       #
# Date édition   : 07 Juil 2008                                                #
#                                                                              #
################################################################################

RewriteEngine On
RewriteCond $0 ^page-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-([^-]*)\.html$ 
RewriteRule ^page-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-[^-]*\.html$ /page.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7&p8=$8&p9=$9&p10=%1

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 2.0 : Guide de l'administrateur Linux
  • Montez votre serveur de A à Z
  • Apache Tomcat 5 : Serveur d'application Java ; Administration sous Windows ou Linux
  • Debian GNU/Linux - Services réseaux (Bind DNS, Apache, NFS, Samba, Messagerie...)
  • Serveurs LAMP : Administration de la plate-forme Web
  • PHP 5.2 et APACHE 2 - Maîtrisez le développement et le déploiement de votre site web interactif [Nouvelle version]
  • Guide de référence : Apache 2 : Installation, configuration et administration sous Windows et Linux
  • Apache (version 2) : Installation, administration et sécurisation
  • Apache : La Référence
  • LAMP (Linux, Apache, MySQL, PHP) - Coffret de 4 livres : Maîtrisez vos applications Web Open Source [Nouvelles versions]