2

我在 nginx 服务器块配置中有以下位置块:

location /eci-new/public {
    try_files  $uri   $uri/ /eci-new/public/index.php?$query_string;
}

location /eci-integration/public {
    try_files  $uri   $uri/ /eci-integration/public/index.php?$query_string;
}

它可以工作,但是我将来需要添加更多位置,我想将其减少到只有一个使用 uri 段的位置块来应用 try_files 指令配置,如下所示:

location ~ /(.*)/public {
    try_files  $uri   $uri/ /$1/public/index.php?$query_string;
}

但是当我尝试加载页面时,我在 chrome 的控制台中收到了这条消息。

资源解释为 Document,但使用 MIME 类型 application/octet-stream 传输:“ http://33.33.33.33/eci-new/public/rms/product-normalization ”。

如何使 nginx 配置正常工作?并将请求发送到 php 处理器?

4

1 回答 1

1

因为您已将前缀位置更改为正则表达式位置,所以它现在与您的 php 位置冲突。所以/eci-new/public/index.phpURI 不会被解释为 php 脚本。

移动 php 位置(类似location ~* \.php),使其位于新的正则表达式位置之上,因此优先考虑 php 脚本。

此外,您可能希望收紧您的正则表达式并^在开头添加 a:

location ~ ^/(.*)/public { ... }

有关详细信息,请参阅此文档

于 2015-12-11T17:36:46.953 回答