在创建我们的汽车电子商务商店时,我们在名称(“/”)中命名了一些带有正斜杠/虚线的产品,例如:VOLKSWAGEN GOLF/GTI
。电子商务引擎会将此产品的网址重写为GOLF%7B47%7DGTI
。我们决定继续将所有产品改为使用世界“AND”而不是正斜线/ virgule。
我们在网上有很多链接,我总是使用mod_rewrite来确保在我们更改产品的命名约定后这些链接仍然有效。但是,这个让我难过!这是我正在尝试做的事情:
OLD URL: http://mystore.com/products/MK4-GOLF%7B47%7DGTI-KONI-STRUTS.html
NEW URL: http://mystore.com/products/MK4-GOLF-AND-GTI-KONI-STRUTS.html
URL的“MK4”部分可以是Mk1,Mk2,Mk3,Mk4,Mk5或Mk6中的任何一个,我们还为每一代Golf / GTI提供各种支柱。因此,我需要编写一个规则,用URL中的GOLF-AND-GTI替换Golf / GTI,并在目标字符串之前或之后继承任何内容。
我当前的(不正确的)RewriteRule看起来像这样:
RewriteRule ^products/(.*)-GOLF%7B47%7DGTI-(.*) http://www.mystore.com/products/$1-GOLF-AND-GTI-$2 [B,R,L]
在过去的几个小时里,我一直把头发拉过来,似乎无法找到合适的工作规则。非常感谢任何帮助!
非常感谢你的时间!
答案 0 :(得分:1)
当%7B47%7D
解码为{47}
时,您可以按如下方式重写网址:
RewriteRule ^products/(.*)-GOLF\{47\}GTI-(.*) http://www.mystore.com/products/$1-GOLF-AND-GTI-$2 [B,R=301,L]
另外,由于您的目的是使用新URL替换旧URL,因此应使用301重定向而不是默认302.这是从SEO角度处理永久URL更改的recommended way。