Regex 重写规则,can';我做不到

Regex 重写规则,can';我做不到,regex,mod-rewrite,url-rewriting,rewrite,url-rewrite-module,Regex,Mod Rewrite,Url Rewriting,Rewrite,Url Rewrite Module,网址: 我需要将其改写为: 我指的是该类型的所有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] 到目前为止看起来是合法的,但似乎不起作用 在这一行之前,我有以下三行: Rewrit

网址:

我需要将其改写为:

我指的是该类型的所有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]
到目前为止看起来是合法的,但似乎不起作用

在这一行之前,我有以下三行:

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]
或者

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]

您无法与
重写规则
中的查询字符串进行匹配。如果您正在请求
http://localhost/amember/login.php?something&foo
,传递给
重写规则的URI仅为
/amember/logi.php
,因此任何带有
\?
的内容都将不匹配,除非URI中有编码的
(通过%3F)

此外,查询字符串中还有一个参数:

amember\u redirect\u 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]

您无法与
重写规则
中的查询字符串进行匹配。如果您正在请求
http://localhost/amember/login.php?something&foo
,传递给
重写规则的URI仅为
/amember/logi.php
,因此任何带有
\?
的内容都将不匹配,除非URI中有编码的
(通过%3F)

此外,查询字符串中还有一个参数:

amember\u redirect\u 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]

你可能想读。读,修复了代码,但仍然不起作用。用我现在拥有的更新第一篇文章。RewriteCond%{QUERY_STRING}^id=(.*)$[NC]此条件未满足不知道该怎么办,尝试了许多不同的方法,但仍然无法满足您可能想要阅读的条件。阅读,修复了代码,但仍然不起作用。用我现在拥有的更新第一篇文章。RewriteCond%{QUERY\u STRING}^id=(.*)$[NC]这个条件不满足不知道该怎么做,尝试了很多不同的方法,但仍然无法满足条件几乎可以工作,除了我得到的是:我需要确定让它工作RewriteCond%{QUERY\u STRING}(.*)amember\u redirect\u url=/ajax/\?id=(.*)多谢各位@EdgardGomezzennovskaya在方括号中添加一个
NE
[L,R=301,NE]
几乎可以工作了,除了我得到的是:我需要让它正常工作RewriteCond%{QUERY\u STRING}(.*)amember\u redirect\u url=/ajax/\?id=(.*)非常感谢@EdgardGomezzennovskaya在方括号中添加一个
NE
[L,R=301,NE]