我们正在从旧网站切换到具有更好的SEO网址的新网站。 我试图这样做:
RewriteRule ^products/boots/materialid/(.*)/colour/(.*)$ http://www.mydomain.com/boots/$2/$1 [R=301,L]
然而问题是:
1)我可以指定它可以包含以下字符
,而不是使用(.*)
a-zA-Z0-9
_
和-
符号+
符号(例如黑色+皮革)2)如果以上操作不起作用,并且对于我的一般知识,如何更新上述内容以使尾部斜杠是可选的?例如。对于上述规则,请转到
www.mydomain.com/materialid/leather/colour/blue/
发给我
www.mydomain.com/blue//leather
额外的斜线是因为"蓝色"之后的斜线。在原始网址中,但我需要将其排除在外。
答案 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]