2014-12-16 2 views
1

htaccess로 정규 표현식 내 마음 :)htaccess로는 -,

내가 쿼리 문자열에서 변수의 변수 번호를 잡으려고 노력하고있어 비틀림되어 REDIR, 쿠키 쓰기, 쿼리에서 여러 바르 잡을에서 그들을 쓰기 쿠키 및 리디렉션 쿼리 문자열 제거 나는 단지 하나의 변수로 작업을 얻었다 그러나 때때로 나는 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 또는 두 개의 변수 만 있습니다. 나는이 일을하는 방법에 대해 머리를 감쌀 수없는 것 같습니다. 또한 변수의 순서가 중요하지 않은 경우 좋을 것입니다.

감사합니다.

답변

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] 
+0

는 빠른 응답 주셔서 감사합니다! 작성한 코드가 가능하거나 쿼리의 변수 순서가 무작위인지 알 수 없습니까? :) – voldsomenterprise

+0

그 작품은 무작위 순서로 괜찮아요. .htaccess에서 쿠키를 사용하지 않습니다. 같은 시간에 둘 이상을 추가 할 수 있는지 모르겠다. – Croises

+0

흠, 아니, 작동하지 않는 것 같습니다. 그것은 foo.com/%5bCO=aid:xxfoo.com:14400:/%5d와 같은 것으로 redirs됩니다. 내 쿠키를 설정하고 indir PHP를 어쩌면 redir 제안합니까? – voldsomenterprise