在.htaccess中我需要匹配一个模式(可能的模式,它可能不存在),但得到一个不同的值$ 1
网址示例:
http://www.example.com/rest-of-the-url
http://www.example.com/en/rest-of-the-url
http://www.example.com/fr/rest-of-the-url
http://www.example.com/it/rest-of-the-url
en / fr / it / 部分可能存在也可能不存在
我使用此模式以 en fr ...
的形式匹配语言^([a-z]{2})?other patterns here$
这没关系,我得到语言部分 $ 1 。但问题是当没有语言部分时, $ 1 从其余网址
< 重新如果我使用这种模式
^([a-z]{2}\/)?other patterns here$
使用这种模式我可以正确地获取语言,无论它们是否存在 $ 1 ,但形式如 en / fr / ...我不想要尾随 /
是否可以像第二个示例中那样匹配并获得与第一个示例相同的值?
PS:是的,在php中清除尾随的 / 非常容易,但我问是否可以在htaccess中执行此操作?
答案 0 :(得分:2)
是的,非常可能在.htaccess中执行此操作。技巧是使用?:
使用非捕获正则表达式组。使用以下正则表达式:
^(?:([a-z]{2})/)?(.+)$
使用上面的正则表达式$1
将en
或fr
没有尾随斜杠/
,而$2
将包含其余的URI。