在htaccess中重定向查询参数和url参数

时间:2017-05-22 13:55:23

标签: apache .htaccess redirect mod-rewrite

我需要进行复杂的网址重写:

我有这个网址:

http://www.exemple.site/fr/slug-to-redirect.html?cmp_id=7&news_id=666

需要重定向到这个:

http://www.exemple.site/slug-to-redirect--666

在我目前的重写条件中,我能够从query_string中选择查询,但不能从url中选择param。我们怎样才能做到这一点?

RewriteCond %{REQUEST_URI}  ^/fr/(.*)\.html$
RewriteCond %{QUERY_STRING} news_id=([0-9]*)$
RewriteRule ^fr/(.*).html$ http://www.example.site/%2--%1 [R=302,L]

2 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteCond %{QUERY_STRING} news_id=([0-9]*)$
RewriteRule ^fr/(.*)\.html$ /$1--%1 [R=302,L]

RewriteRule中使用$ 1,$ 2,$ ...作为() 并在RewriteCond

中使用%1,%2,%... for()

答案 1 :(得分:0)

这就是为什么你的规则不能按预期工作的原因:

  

%1到%9提供对分组部分的访问(再次,在括号中)   模式中,来自当前集合中的最后一个匹配的RewriteCond   条件。

@Croises的答案是正确的,但作为使用多个floor的反向引用的更一般方法,可以使用:

ceil