rewriting url: l'incompétence
Bonjourà tous,
Désolé tout d'abord d'arriver ici avec une question de parfait débutant, mais ce n'est pas faute d'avoir cherché une solution un peu partout.
J'ai joué avec pendant quelques heures, fureté à droite et à gauche mais bon, là.....
J'ai essayé de faire l'explication la + complète possible de ce qui m'arrive mais dans ces moments de grande solitude, on n'est rarement très méthodique !
Dans mon htaccess(j'utilise CMSMS) j'ai mis en place le rewriting url sans souci + les filtrages qui vont bien.
VOICI MON HTACCESS
Code:
1 2 3 4 5 6 7 8 9 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 46 47 48 49 50 51 52 53 54 55
| #Options -Indexes
RewriteEngine On
# RewriteBase /
--------------------------MA SYNTAXE DESOLANTE--------------------------------------------
RewriteCond %{REQUEST_URI} ^/ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$
RewriteRule ^(.*)ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ http://www.monsite.com/index.php?page=groupe-expert&clefville=$1&clefgroupe=25 [L,R=301]
---------------------------------------------------------------------------------------------
RewriteRule ^formations-informatiques/([0-9]+)/([0-9]+)/([a-z0-9-]+)\.html$ /index.php?page=groupe-expert&clefville=$1&clefgroupe=$2 [QSA]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# URL Filtering helps stop some hack attempts
#IF the URI contains a "http:"
RewriteCond %{QUERY_STRING} http\: [OR]
#OR if the URI contains a "["
RewriteCond %{QUERY_STRING} \[ [OR]
#OR if the URI contains a "]"
RewriteCond %{QUERY_STRING} \] [OR]
#OR if the URI contains a "<script>"
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#OR script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#OR any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
#IF the URI contains UNION
RewriteCond %{QUERY_STRING} UNION [OR]
#OR if the URI contains a *
RewriteCond %{QUERY_STRING} \*
#then deny the request (403)
RewriteRule ^.*$ - [F,L]
# End URL Filtering
# force le passage a utilisation php5
SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0
# No sense advertising what we are running
ServerSignature Off |
Dans mon nouveau site(sous cmsms) je passe 2 paramètres à une page sous la forme suivante :
index.php?page=groupe-expert&clefville=22&clefgroupe=49
Les url de mon ancien site(développé à la main à l'époque héroique) étaient de la forme suivante:
Code:
http://www.monsite.com/ensemble/expertise/22/25/nomfichier.html
La variable clefville reste la même, la table qui gère les villes est identique, par contre les clefgroupe ont changé- ici l'ancien était 49 et il passe à 25 pour l'exemple)
En clair je rentre le nouvel id "clefgroupe" en dur mais j'essaie de repêcher dans l'url l'id "clefville"
J'ai donc rajouté :
Code:
1 2
| RewriteCond %{REQUEST_URI} ^/ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$
RewriteRule ^(.*)ensemble/expertise/([0-9]+)/25/([a-z0-9-]+).*$ http://www.monsite.com/index.php?page=groupe-expert&clefville=$1&clefgroupe=25 [L,R=301] |
et voilà ce que j'obtiens:
Code:
http://www.monsite.com/index.php?page=groupe-expert&clefville=&clefgroupe=25
En gros, je suis incapable de lui faire récupérer la première variable (clefville) contenue dans l'url pour lui faire réécrire cette variable dans mon Rewrite Rule. :oops:
Merci à tous pour votre aide :roll: