重写规则匹配全部或全部

时间:2018-04-01 17:44:41

标签: regex .htaccess mod-rewrite

我无法处理一个ReweriteRule

RewriteRule ^thingsy_things_(.*)(_in_)?.*?/?$ /$1 [NC,L]

网址 www.mydomain.com/thingsy_things_name_name_in_somewhere/

但有时可能是:www.mydomain.com/thingsy_things_name_name/

该名称部分可以是name_name_name或更多。

完美分隔符是 in 但如果(_in_)?规则匹配第一组中的所有内容。

如何处理?

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

RewriteRule ^(([a-z0-9]+)(_$1)+)$ /$1 [NC, L]

注意 - 我没有URL重写的经验,但我试图理解语法,以及我之前的正则表达式知识,为您提供此代码。请随意指出我可能使用过的错误或任何有害行为。

说明 -

^(([a-z0-9]+)(_$2))+$是检查name_name格式

的模式

([a-z0-9]+)是第(2)组,它捕获name格式的name_name部分,

(_$2)+是对群组(2)的反向引用,这意味着name部分必须后跟一个或多个_name