
Règle de réécriture avec plus de 9 paramètres
Information sur le code source
Enregistr� le 07 Juil 2008 - Vu 9515 fois
 | Votre avis: |
|
| |
[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 : /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
|
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