[.htaccess] URL rewriting

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [.htaccess] URL rewriting

par Rem73 » 04 mai 2009, 19:23

Merci de ta réponse,

Sachant que mes liens peuvent contenir plusieurs données en query string et des fois aucunes.

Je préfère changer de délimiteur, surtout que des conditions multiples avec des expression régulière c'est pas TOP question performance.

Merci de votre aide :D

par naholyr » 03 mai 2009, 23:29

La query-string ne peut pas être intégrée à l'url rewriting à ma connaissance. Utilise un autre séparateur que "?" ;)

[edit]
L'excellent lien donné par jojolapine semble dire le contraire, et d'après les infos qu'on y trouve, une solution pourrait être de ce genre :

Code : Tout sélectionner

RewriteEngine On # Condition sur l'URL RewriteCond %{REQUEST_URI} ^/connexion.html # Condition sur la query-string, et capture de sa valeur RewriteCond %{QUERY_STRING} ^([a-z0-9]+)$ # Application de la règle RewriteRule connexion\.html(.*)$ tuks_0.0.3/index.php?module=membres&action=connexion&SID=%1 [L]
[/edit]

par jojolapine » 03 mai 2009, 22:44

Bonsoir,
Regarde de ce côté: http://corz.org/serv/tricks/htaccess2.p ... -variables
Je suis pas très calé (j'avais bloqué de la même manière sans pouvoir résoudre la dernière fois...), mais je suis à peu près sur qu'on peu pas capturer "normalement" la query string...

par Rem73 » 03 mai 2009, 21:51

Le seconde chaine n'est pas une expression régulière donc elle n'a pas besoin d'un échappement :wink:

Enfin c'est ce que je vois ici : http://www.yourhtmlsource.com/sitemanag ... iting.html

Et avec l'échappement ça marche pas non plus ;)


EDIT : Après quelques corrections je remarque que le problème vient des parentaises capturantes qui ne capturent rien du tout
Nouveau fichier :

Code : Tout sélectionner

RewriteEngine on RewriteRule ^connexion\.html\??([a-z0-9]{32})?$ /tuks_0.0.3/index.php?module=membres&action=connexion&SID=$1 [L]
EDIT 2 : J'ai voulu tester mon expression rationnel avec un petit script php :
<?php
$chaine = "connexion.html?8290943366f63b94c8e8860bd7afe314";
if (ereg ("^connexion\.html\?([a-z0-9]{32})$", $chaine, $regs)) {
    echo "$regs[1]";
} else {
    echo "Url invalide : $chaine";
}
?>
Et comme je le pensais il me retour la SID, a croire que c'est pas du POSIX :roll:

EDIT 3 : après pas mal de test en tout genre j'ai pu remarquer que le point d'interrogation n'était plus utilisé comme métacaratère, mais tout bonnement supprimé. Vive Apache :D

Après tout pas besoin de faire des URL dans les règles de l'art, un autre délimiteur que "?" peut-être choisi comme le "&".

Re: [.htaccess] URL rewriting

par albat » 03 mai 2009, 21:47

Code : Tout sélectionner

RewriteRule ^connexion\.html\?([a-z0-9]+)$ /tuks_0.0.3/index.php?module=membres&action=connexion&SID=$1 [L] ^ ^ | | celui-là, oui celui-là, non

par Rem73 » 03 mai 2009, 21:28

C'est la première chose qui m'est venu à l'idée et comme tu peux le voir dans mon expression régulière le "?" est déjà échapper :wink:
C'est très bizarre, je crois que c'est le seul métacaractère qui fou la pagaille.

par momox » 03 mai 2009, 19:10

Echappe le ? avec un \, car c'est un caractère reservé.

[.htaccess] URL rewriting

par Rem73 » 03 mai 2009, 17:52

Bonjour,

Je me trouve avec un problème qui me parait très bizarre, voici mon fichier .htaccess

Code : Tout sélectionner

RewriteEngine on RewriteRule ^connexion\.html\?([a-z0-9]+)$ /tuks_0.0.3/index.php?module=membres&action=connexion&SID=$1 [L]
Et quand je vais à l'adresse : http://localhost/tuks_0.0.3/connexion.h ... 0bd7afe314

Je tombe sur une erreur 404, alors que si je supprime le "?" dans le .htaccess et dans mon URL cela fonctionne très bien

Merci d'avance