2

URL: http://mysite.com/amember/login.php?amember_redirect_url=/ajax/?id=9999

http://mysite.com/amember/login.php?amember_redirect_url=/?p=9999に書き換える必要があります 。

そのタイプのすべての URL を意味します (末尾に ID が付いています)。

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]

これまでのところ合法に見えますが、機能していないようです...

その行の前に、次の 3 行があります。

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

アップデート。これを試しました:

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

動作しません

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

また

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

また

更新しました:

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]
4

1 に答える 1

0

のクエリ文字列と照合することはできませんRewriteRule。を要求している場合http://localhost/amember/login.php?something&foo、a に渡される URIRewriteRuleは のみ/amember/logi.phpです。したがって、URI に (%3F を介して)\?エンコードされていない限り、a を含むものはすべて一致しません。?

さらに、クエリ文字列には単一のパラメーターがあります。

amember_redirect_url=/ajax/?p=9999

クエリ文字列パラメーターの値の?内部は、で区切られていないため、それ自体はパラメーターではありません。そのため、それと&照合して書き換える必要があります。

RewriteCond %{QUERY_STRING} (.*)amember_redirect_url=/ajax/(.*)
RewriteRule ^/?amember/login\.php$ /amember/login.php?%1amember_redirect_url=/%2 [L,R=301]
于 2012-10-02T17:38:07.427 に答える