我需要进行复杂的网址重写:
我有这个网址:
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]
答案 0 :(得分:2)
您可以使用:
RewriteCond %{QUERY_STRING} news_id=([0-9]*)$
RewriteRule ^fr/(.*)\.html$ /$1--%1 [R=302,L]
在RewriteRule
中使用$ 1,$ 2,$ ...作为()
并在RewriteCond
答案 1 :(得分:0)
这就是为什么你的规则不能按预期工作的原因:
%1到%9提供对分组部分的访问(再次,在括号中) 模式中,来自当前集合中的最后一个匹配的RewriteCond 条件。
@Croises的答案是正确的,但作为使用多个floor
的反向引用的更一般方法,可以使用:
ceil