2017-03-27 49 views
1

我正在使用rewriteRule修复旧网店中的一些网址,以便在新网店(重新启动)中使用它们。这是正则表达式。使用mod_rewrite模块在htaccess中删除双破折号

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

这个想法是将url中的句点转换为单个短划线。

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

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

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

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

+0

尝试增加' - *'后点匹配模式消耗点之后的所有现有'-'s。类似于“^(。*)/([^。] *)\。+ - *([^。] * \ .. *)$”'和'“^(。*)/([^。] *)\ .- *([^。] *)$“' –

+0

谢谢。这工作。随时让这个答案,我会接受它。 – Jabb

+0

很高兴为你效劳。如果我的回答对你有帮助,也请考虑积极投票。 –

回答

0

如果\.+后添加食用-*模式,所有现有-符号将得到匹配,并因此会因替换而被移除(因为它们未被捕获,即它们不在(...)内)。

使用

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

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