2

URL: http://mysite.com/amember/login.php?amember_redirect_url=/ajax/?id=9999RewriteRule, ne peut pas le faire fonctionner

je en ai besoin d'être réécrite à: http://mysite.com/amember/login.php?amember_redirect_url=/?p=9999

Je veux dire tous les urls de ce type (avec ID sur la fin) mon rewriterule:

RewriteRule http://mysite.com/amember/login.php\?amember_redirect_url=/ajax/\?id=(.*) http://mysite.com/amember/login.php\?amember_redirect_url=\/?p=$1 [R=301,L] 

Alors regarde loin réglo, mais il ne semble pas fonctionner ...

Avant cette ligne j'ai 3 lignes suivantes:

RewriteEngine on 
RewriteBase/
RewriteRule ^members/(.*) http://mysite.com/$1 [R=301,L] 

Mise à jour. Essayé ceci:

RewriteRule /amember/login.php\?amember_redirect_url=/ajax/\?id=(\d+) /amember/login.php?amember_redirect_url=/?p=$1 [R=301,L] 

ne fonctionne pas

RewriteRule ^amember/login.php\?amember_redirect_url=/ajax/\?id=(\d+) /amember/login.php?amember_redirect_url=/?p=$1 [R=301,L] 

soit

RewriteRule ^amember/login.php\?amember_redirect_url=/ajax/\?id=(\d+) http://mysite.com/amember/login.php?amember_redirect_url=/?p=$1 [R=301,L] 

soit

MISE À JOUR:

RewriteCond %{QUERY_STRING} ^id=(.*)$ [NC] 
RewriteRule /amember/login.php\?amember_redirect_url=/ajax/$ /amember/login.php\?amember_redirect_url=/?p=%1 [NC,R=301,L] 
+0

vous pouvez lire [mod_rewrite basé sur STRI de requête ng paramètres] (http://statichtml.com/2010/mod-rewrite-baseon-on-query-string.html). –

+0

Lecture, correction du code, mais ne fonctionne toujours pas. Mettre à jour le premier message avec ce que j'ai en ce moment. –

+0

RewriteCond% {QUERY_STRING}^id = (. *) $ [NC] cette condition n'a pas été remplie –

Répondre

0

Vous ne pouvez pas faire correspondre à la chaîne de requête dans un RewriteRule. Si vous demandez http://localhost/amember/login.php?something&foo, l'URI transmise à un RewriteRule est seulement /amember/logi.php, donc tout ce qui a un \? ne correspondra pas, sauf s'il y a un codé ? (via un% 3F) dans l'URI.

De plus, vous disposez d'un unique param dans votre chaîne de requête:

amember_redirect_url = /ajax/?p=9999

La ? dans la valeur du paramètre de chaîne de requête n'est pas un paramètre par lui-même parce qu'il est pas séparé par une &, vous devez donc faire correspondre cela et réécrire que:

RewriteCond %{QUERY_STRING} (.*)amember_redirect_url=/ajax/(.*) 
RewriteRule ^/?amember/login\.php$ /amember/login.php?%1amember_redirect_url=/%2 [L,R=301] 
+0

presque fonctionne, sauf ce que je reçois est: http://mysite.com/amember/login.php?amember_redirect_url=/%3fid=4025 et j'ai besoin d'obtenir http://mysite.com/amember/login.php?amember_redirect_url=/?p=4025 –

+0

ok eu le travail RewriteCond% {QUERY_STRING} (. *) amember_redirect_url =/ajax/\? id = (. *) Merci beaucoup! –

+0

@EdgardGomezSennovskaya Ajouter un 'NE' entre crochets:' [L, R = 301, NE] ' –

Questions connexes