我的网站已从1个平台转换为另一个平台。我有数千页索引看起来像这样:
domain.com/test/red_widget.html
domain.com/test/big_red_widget.html
domain.com/test/small_nice_red_widget.html
需要看起来像这样:
domain.com/test/red-widget.html
domain.com/test/big-red-widget.html
domain.com/test/small-nice-red-widget.html
因此,此示例中的所有相关网址都位于" test"路径,使用下划线并具有html扩展名。
我需要"测试"中的所有网址。除了下划线之外,html扩展名的路径将被重写," _",将替换为短划线," - "。
我尝试了很多东西,但我可以兼容当前需要继续工作的htaccess规则。
现在我有这条规则:
RewriteRule ^test/(.*).html$ /?kw=$1
哪个确实有效,但对于像domain.com/test/small_nice_red_widget.html这样的网址,kw参数将被设置为small_nice_red_widget,而我真的需要将它设置为small-nice-red-widget。
任何指导或任何人都可以指出我正确的方向将不胜感激。
答案 0 :(得分:0)
这应该适合你:
RewriteRule ^test/(.*)_(.*)_(.*)_(.*).html$ /test/$1-$2-$3-$4.html [R,L]
RewriteRule ^test/(.*)_(.*)_(.*).html$ /test/$1-$2-$3.html [R,L]
RewriteRule ^test/(.*)_(.*).html$ /test/$1-$2.html [R,L]
将上述内容置于当前重写规则之上。
答案 1 :(得分:0)
您也可以使用斜杠替换任意数量的下划线:
RewriteRule ^test/(.*)_(.*)\.html$ /test/$1-$2.html [L,E=DASH:Y]
RewriteCond %{ENV:DASH} Y
RewriteRule ^([^_]+)$ /$1 [L,R=301]