.htaccess-从查询、写入cookie和重读中捕获多个变量

.htaccess-从查询、写入cookie和重读中捕获多个变量,.htaccess,mod-rewrite,redirect,cookies,url-rewriting,.htaccess,Mod Rewrite,Redirect,Cookies,Url Rewriting,.htaccess和正则表达式让我心烦意乱:) 我试图从查询字符串中捕获数量可变的变量,将它们写入cookie并重定向删除查询字符串。我让它只使用一个变量,但有时我需要它来捕捉2或3。以下是使用一个变量的代码: RewriteCond %{QUERY_STRING} ^(tag|aid|flu)=([a-z0-9]+)$ [NC] # look for interesting variables in url RewriteRule ^(.*)$ $1? [CO=%1:%

.htaccess和正则表达式让我心烦意乱:)

我试图从查询字符串中捕获数量可变的变量,将它们写入cookie并重定向删除查询字符串。我让它只使用一个变量,但有时我需要它来捕捉2或3。以下是使用一个变量的代码:

RewriteCond %{QUERY_STRING} ^(tag|aid|flu)=([a-z0-9]+)$     [NC]    # look for interesting variables in url
RewriteRule ^(.*)$ $1?      [CO=%1:%2:foo.com:14400:/,R=301,L]  # capture url strip for vars, write cookie, redir
但是很明显,如果请求的url是foo.com?tag=xx&aid=yyy&flu=bbb或者只有两个变量,那么这将不起作用。我就是不知道该怎么做。如果变量的顺序无关紧要,那也很好


谢谢

我不知道是否有可能做到:

# tag
RewriteCond %{QUERY_STRING} (?:^|&)tag=([a-z0-9]+)(?:&|$) [NC]
RewriteRule ^ - [CO=tag:%1:foo.com:14400:/]

# aid
RewriteCond %{QUERY_STRING} (?:^|&)aid=([a-z0-9]+)(?:&|$) [NC]
RewriteRule ^ - [CO=aid:%1:foo.com:14400:/]

# flu
RewriteCond %{QUERY_STRING} (?:^|&)flu=([a-z0-9]+)(?:&|$) [NC]
RewriteRule ^ - [CO=flu:%1:foo.com:14400:/]

# Final
RewriteCond %{QUERY_STRING} (?:tag|aid|flu)=.+ [NC]
RewriteRule ^(.*)$ $1?      [R=301,L]

感谢您的快速回复!您不知道您编写的代码是否可能,也不知道查询中变量的随机顺序是什么?:)如果这样做有效的话,随机顺序也可以。我从不使用.htaccess中的cookie。我不知道是否可以同时添加多个…嗯,不,似乎不起作用。它类似于foo.com/%5bCO=aid:xxfoo.com:14400:/%5d。您是否建议我设置cookies和redir ind php?您是否尝试清除缓存或使用其他浏览器(301重定向的缓存问题)。很明显,PHP中还有更多的可能性……我忘记了
-
请再试一次。