0

我们正在从旧站点切换到具有更好的 SEO 网址的新站点。我正在尝试这样做:

RewriteRule ^products/boots/materialid/(.*)/colour/(.*)$ http://www.mydomain.com/boots/$2/$1 [R=301,L]

然而问题是:

(.*)1)我可以指定它可以包含以下字符而不是使用

  • 任何字母数字字符a-zA-Z0-9
  • 任何欧元字符,例如德语特殊 UTF8 字符
  • _-符号
  • 也可以包含一个+符号(例如黑色+皮革)

2)如果上述方法不起作用,并且就我对此的一般知识而言,我如何更新上述内容以便尾随斜杠是可选的?例如对于上述规则,去

www.mydomain.com/materialid/leather/colour/blue/

送我到

www.mydomain.com/blue//leather

额外的斜线是因为原始 URL 中“蓝色”之后的斜线,但我需要排除它。

4

1 回答 1

3

试试这个:

RewriteRule ^products/boots/materialid/([^/]*)/colour/([^/]*)/?$ http://www.mydomain.com/boots/$2/$1 [R=301,L]

[^/]匹配任何不是斜线的字符。 /?表示可选的尾部斜杠(注意它在捕获括号之外,因此它不会包含在重写的 URL 中)。

编辑

根据您的评论,添加可选的 /index.php:

RewriteRule ^products/boots/materialid/([^/]*)/colour/([^/]*)(/|/index\.php)?$ http://www.mydomain.com/boots/$2/$1 [R=301,L]
于 2012-07-24T13:00:32.040 回答