nginx正则表达式有多个选项

时间:2016-02-15 09:00:37

标签: regex nginx

我想制作一个正则表达式(我使用Nginx)来做这样的事情:

输出示例:

/m/signup
/en/signup
/fr/m/signup
/en/m/signup

我试过这样的事情:

rewrite ^/(m|(fr|en)|(fr|en)\/m)/(signup|otherpage)$ /$2.php?p=$1 last;

参数“p”应为“m”,或“en”,或“fr”,或“fr / m”。

但它不想工作..

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

^/((?:en|fr)/m|m|(?:en|fr))/(signup|otherpage)$

请参阅the regex demo

我使用此代替(m|(fr|en)|(fr|en)\/m)

  • (?:en|fr)/m - enfr后跟/m
  • | - 或......
  • m - 只是m
  • | - 或......
  • (?:en|fr) - either {烯{1}} fr`