我们是从一个旧网站切换到新站点的搜索引擎优化更好的URL。 我试图做到这一点:
We're switching from an old site to a new site with better URLs for SEO. I'm trying to do this:
RewriteRule ^products/boots/materialid/(.*)/colour/(.*)$ http://www.mydomain.com/boots/$2/$1 [R=301,L]
但问题是:
1),而不是使用(。*)
,我可以指定这个可以有以下字符
1) Instead of using (.*)
, can I specify that this can have the following characters
A-ZA-Z0-9
在欧洲的任何字符,例如德国的特殊UTF8字符
_
和 -
符号
也可以包含 +
符号(如黑+皮)
any alphanumeric character a-zA-Z0-9
any Euro character such as German special UTF8 characters
_
and -
symbols
also can contain a +
symbol (e.g. black+leather)
2)如果以上都不行,以及我对这个常识,如何更新上面,这样斜线是可选的?例如。对于上述规则,将
2) If the above won't work, and for my general knowledge on this, how do I update the above so that a trailing slash is optional? E.g. for the above rule, going to
www.mydomain.com/materialid/leather/colour/blue/
送我到
www.mydomain.com/blue//leather
额外的斜线来,因为在原来的网址蓝之后的斜线,但我需要排除这一点。
The extra slash comes because of the slash after "blue" in the original URL, but I need to exclude this.
推荐答案
试试这个:
RewriteRule ^products/boots/materialid/([^/]*)/colour/([^/]*)/?$ http://www.mydomain.com/boots/$2/$1 [R=301,L]
[^ /]
匹配任何字符不是斜线。 / 表示可选尾随斜线(注意,这是捕获括号外面,因此它不会被包括在重写URL)。
[^/]
matches any character that is NOT a slash. /?
means an optional trailing slash (note that it is outside of the capturing parentheses, so that it will not be included in the rewritten URL).
修改
根据您的评论,添加一个可选的index.php:
As per your comment, to add an optional /index.php:
RewriteRule ^products/boots/materialid/([^/]*)/colour/([^/]*)(/|/index.php)?$ http://www.mydomain.com/boots/$2/$1 [R=301,L]
相关推荐
最新文章