Nginx 友好的 URL 重写规则

Nginx 友好的 URL 重写规则

我最近从 Apache 迁移到了 Nginx,性能无可挑剔。
该网站是一个下载服务器(主要),带有自定义 PHP 脚本。

一些示例 URL 如下:

https://sub.example.com
https://sub.example.com/index.php?dir=foo1/
https://sub.example.com/index.php?dir=foo2/
https://sub.example.com/index.php?dir=foo2/bar1/
https://sub.example.com/index.php?dir=foo2/bar2/

我想让它们成为友好的 URL,因此上面的内容变成:

https://sub.example.com
https://sub.example.com/foo1/
https://sub.example.com/foo2/
https://sub.example.com/foo2/bar1/
https://sub.example.com/foo2/bar2/

请注意我们的 PHP 脚本生成的尾部斜杠。
无论有没有该斜杠(手动输入 URL 时),目录都可以访问,并且重写后无论有没有该斜杠都需要可以访问。

对 Nginx 的重写配置有什么想法吗?

答案1

你可以使用try_files对文件系统上实际存在的文件和您想要作为参数提供的 URI(如 /foo1/)产生影响。

location = / {
  try_files $uri /index.php?dir=$uri;
}

在 PHP 中这将产生:

echo $_GET['dir'];
# /foo1/

相关内容