.htaccess - 从查询中捕获多个变量,写入cookie,reddit

时间:2014-12-16 22:52:36

标签: .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:%2:foo.com:14400:/,R=301,L]  # capture url strip for vars, write cookie, redir

但很明显,如果请求的网址是foo.com?tag=xx&aid=yyy&flu=bbb或只有两个变量,则无效。我似乎无法绕过如何做到这一点。如果变量的顺序并不重要,那也很好。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道是否可以这样做:

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