2010-06-10 5 views
0

Je voudrais réécrire l'URL dynamiquePassage URL comme paramètre à l'aide mod_rewrite

/index.php?pid=login&redirect=/previous-page.html

à quelque chose comme ça

/login.html-r-previous-page.html

J'ai essayé

RewriteRule ^login.html-r-(.*)$ /index.php?pid=login&redirect=$1 [L] 

Mais succès. J'essayais aussi de changer l'expression rationnelle en. + Ou d'autres formes, mais cela semble inutile. Peut-être que je fais une erreur ailleurs.

Je suis nouveau dans les expressions régulières et aussi mod_rewrite.

Nous vous remercions de l'aide

Répondre

1

Vous devez échapper au caractère point et vous devez échapper à la backreference puisqu'il est de faire partie de la chaîne de requête. Vous étiez également incohérent dans la mesure où la correspondance du motif regex supposait qu'il y avait une base de réécriture (il n'y a pas/au début) et le nouveau chemin ajoute un/dans le début. Vous avez oublié aussi un ajouter un/au début du paramètre redirect

RewriteEngine on 
RewriteBase/
RewriteRule ^login\.html-r-(.*)$ index.php?pid=login&redirect=/$1 [L,B] 
0

Ceci est une réponse rapide, très probablement mal, mais:

RewriteRule ^/login\.html\-r\-(.*)$ /index.php?pid=login&redirect=$1 [L] 

Je pense que regex est fou sur le « » et le "-" car ils sont spéciaux ... Aussi peut-être la barre oblique au début aidera, peut-être pas, essayer avec et sans

Aussi je voudrais vérifier les drapeaux (à la fin dans le []) pour s'assurer qu'ils ont raison