.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或只有两个变量,则无效。我似乎无法绕过如何做到这一点。如果变量的顺序并不重要,那也很好。
谢谢!
答案 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]