htaccess reg exp with params

时间:2013-01-06 18:18:40

标签: .htaccess url-rewriting

我在最后有这个可选参数的网址:

http://domain.local/?_escaped_fragment_=watch/1/10/test/optionalparams/optionalparams/optionalparams/optionalparams..

我希望将其重定向到

http://domain.local/videos/watch/test?id=10

我尝试了很多htaccess重写规则和conds,但它根本不起作用.. 这是我的htaccess:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)/(.*)/(.*)/(.*)(/(.*)?)$
RewriteRule ^(.*) /videos/%1/%4?id=%3 [NC,R=301]

有人可以帮我找到解决方案.. :)

提前致谢!


修改更多精度:

当我尝试这个网址时:

?_escaped_fragment_=watch/1/10/title

使用此重写规则

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)/(.*)/(.*)/(.*)$
RewriteRule ^(.*) /videos/%1/%4?id=%3 [NC,R=301]

它像我想要的那样工作! 但是,如果我尝试使用像这样的/ title之后的任何网址

?_escaped_fragment_=watch/1/10/title/param/param/param

它不起作用...... 我尝试过这个reg ex与另一个cond

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)/(.*)/(.*)/(.*)(/(.*)?)$
RewriteRule ^(.*) /videos/%1/%4?id=%3 [NC,R=301]

我不明白为什么它不起作用..有人能帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/([a-zA-Z0-9\-]+)/([0-9]+)/([0-9]+)/([a-zA-Z0-9\-]+)
RewriteRule ^(.*) /videos/%1/%4/?id=%3&page=%2 [NC,R=301]