RewriteRule ^products/(\d+)/(.*)/(.*)/(.*)/([^_]+)-_([^.]+)_([^.]+)_([^.]+)_([^.]+)_([^.]+).html$ /$5-$6-$7-$8-$9-$10/p$1 [L,NC,R=301]
上述重定向规则会将我从此网址重定向
http://www.example.com/products/44/category/sub_category/sub_to_sub_category/product_name_with_multiple_under_scores.html
到
http://www.example.com/product-name-with-multiple-under-440/p44
在上述重定向规则中,产品名称(分数)的最后一个字符被读作段$ 1,即44和" 0"附加到它。
我的问题是我们应该为第十段写些什么?
答案 0 :(得分:3)
根据mod_rewrite docs,您无法在RewriteRule中访问超过9个分组部分:
http://httpd.apache.org/docs/current/mod/mod_rewrite.html
因此,要实现您所追求的目标,您可以将一些现有组合在一起,使总数低于10.在您的示例中,您不使用$ 2,$ 3和$ 4匹配,因此您可以进行分组那些没有问题:
RewriteRule ^products/(\d+)/((.*)/(.*)/(.*))/([^_]+)-_([^.]+)_([^.]+)_([^.]+)_([^.]+)_([^.]+).html$ /$3-$4-$5-$6-$7-$8/p$1 [L,NC,R=301]