htaccess mod使用可选斜杠重写

时间:2012-07-24 12:34:23

标签: .htaccess

我们正在从旧网站切换到具有更好的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

额外的斜线是因为"蓝色"之后的斜线。在原始网址中,但我需要将其排除在外。

1 个答案:

答案 0 :(得分: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]