.htaccess htaccess mod rewrite带有可选斜杠

.htaccess htaccess mod rewrite带有可选斜杠,.htaccess,.htaccess,我们正在从一个旧站点切换到一个新站点,为SEO提供更好的URL。 我正在尝试这样做: RewriteRule ^products/boots/materialid/(.*)/colour/(.*)$ http://www.mydomain.com/boots/$2/$1 [R=301,L] 然而,问题是: 1) 我是否可以指定它可以包含以下字符,而不是使用(.*) 任何字母数字字符a-zA-Z0-9 任何欧元字符,如德语特殊UTF8字符 和-符号 也可以包含+符号(例如黑色+皮革) 2)

我们正在从一个旧站点切换到一个新站点,为SEO提供更好的URL。 我正在尝试这样做:

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中“blue”后的斜杠,但我需要排除它。

试试这个:

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]
试试这个:

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]

通过在正则表达式中附加
来实现在正则表达式中使字符可选。所以
www.url.com/material/leather/colour/blue/?
非常感谢!请参见下面我的评论-我可以添加可选的/index.php吗?e、 g.www.url.com/material/leather/color/blue/?(index.php)?通过在正则表达式中附加
来实现在正则表达式中使字符可选。所以
www.url.com/material/leather/colour/blue/?
非常感谢!请参见下面我的评论-我可以添加可选的/index.php吗?e、 g.www.url.com/material/leather/color/blue/?(index.php)?非常感谢!这起作用了。太好了:)你能告诉我如何在上面提到的代码中添加一个可选的“/index.php”吗?当旅行的时候?是可选的,也有可能像这样访问URL..../index.php-因此我希望应用相同的规则。有可能吗?@rishijd是的,你也可以在末尾有一个可选的
index.php
。但是,您希望避免重定向
blueindex.php
,因此需要一些稍微花哨的正则表达式:
../blue(/(index\.php)??
。注意转义的
。非常感谢!这起作用了。太好了:)你能告诉我如何在上面提到的代码中添加一个可选的“/index.php”吗?当旅行的时候?是可选的,也有可能像这样访问URL..../index.php-因此我希望应用相同的规则。有可能吗?@rishijd是的,你也可以在末尾有一个可选的
index.php
。但是,您希望避免重定向
blueindex.php
,因此需要一些稍微花哨的正则表达式:
../blue(/(index\.php)??
。注意转义的