使用htaccess中的mod_rewrite模块从url中删除双短划线

时间:2017-03-27 12:10:16

标签: regex apache .htaccess mod-rewrite

我正在使用rewriteRule来修复旧网店的一些网址,以便在新的网上商店(重新启动)中使用它们。这是正则表达式。

#change period to dash
RewriteRule "^(.*)/([^.]*)\.+([^.]*\..*)$" $1/$2-$3 [L,NC]
RewriteRule "^(.*)/([^.]*)\.([^.]*)$" $1/$2-$3 [L,NC,R=302]

我们的想法是将网址中的句点转换为单个短划线。

  

/Biertischhussen/Dena-Biertischhusse-3tlg.-Set-Arcade-50x220cm-ecru-lang

     

/ Biertischhussen /德娜-Biertischhusse-3tlg-SET-街机50x220cm-本色琅

rewriteRule只能工作80%,因为它产生双破折号...我该如何解决这个问题?

  

/ Biertischhussen /德娜-Biertischhusse-3tlg - 设置-街机50x220cm-本色琅/

1 个答案:

答案 0 :(得分:0)

如果您在-*之后添加消费\.+模式,则所有现有-符号都会匹配,因此会因替换而被删除(因为它们未被捕获) ,即它们不在(...))内。

使用

 "^(.*)/([^.]*)\.+-*([^.]*\..*)$"
                  ^^

"^(.*)/([^.]*)\.-*([^.]*)$" 
                ^^