3

在 .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会从rest-of-the-url变成re

如果我使用这种模式

^([a-z]{2}\/)?other patterns here$

使用这种模式,无论语言是否存在,我都可以正确获取到$1的语言,但是以en/ fr/ 之类的形式......我不想尾随/

是否可以像第二个示例中那样匹配并获得第一个示例中的值?

PS:是的,在 php 中清理尾随/非常容易,但我问是否可以在 htaccess 中执行此操作?

4

1 回答 1

2

是的,很有可能在 .htaccess 中做到这一点。诀窍是使用非捕获正则表达式组使用?:. 使用以下正则表达式,例如:

^(?:([a-z]{2})/)?(.+)$

使用上面的正则表达式$1将有enfr没有斜杠/$2并将有其余的 URI。

于 2013-01-07T14:48:31.393 回答