nginx:如何编写正则表达式将 URL 拆分为主机和“其他所有内容”?

nginx:如何编写正则表达式将 URL 拆分为主机和“其他所有内容”?

我想要地图

https://www.example.com/Something/SomethingElse/

https://www.example.com/index.php?/Something/SomethingElse/

到目前为止,我明白我需要locationnginx 中的指令并使用try_files内部指令,如下所示:

location ~ *???* {
  try_files $uri $uri/ /index.php?$1;
}

现在,问题是:如何编写正则表达式*???*来拆分 URL,以便得到/Something/SomethingElse/后面的 (变成$1)?这可能吗?

也许,有更简单的方法?nginx 变量?

答案1

变量$请求uri包含 URL 的所有部分(不包括主机(和方案 - http 或 https)。因此,解决方案是使用以下代码(或类似代码)...

location / {
   try_files $uri $uri/ /index.php?$request_uri
}

在 Nginx 中我们有一个名为$uri。不建议使用它,因为它可以在运行时改变其值。

相关内容