8

我正在从 Apache 迁移到 Nginx。

我目前正在使用自定义内容管理解决方案,该解决方案利用 SERVER['request_uri'] 来处理路由。

我想要做的是将所有不存在的文件和目录请求重定向到 /index.php,而不是更新客户端 uri。但是,当文件确实存在时,我想返回它。

示例 url 将是:localhost/content/page/1 <- 应该将 $_SERVER['request_uri'] 填充为 /content/page/1 或 localhost/public/script/exists.js <- 应该作为实际返回文件。

4

1 回答 1

10

您需要在 nginx vhost文件中添加location /块或更新当前块。location /

index.php如果找不到文件或目录,这会将所有请求重定向到:

location / {
    try_files $uri $uri/ /index.php;
}

这在您的服务器指令中,有关更多信息,请访问http://wiki.nginx.org/HttpCoreModule

修改 vhost 文件后,您需要重新启动 nginx

注意:服务器块的 try_files 指令是在 0.7.44 中添加的

于 2012-12-22T06:18:24.763 回答