在try_files指令

时间:2015-12-11 16:55:49

标签: nginx nginx-location

我在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段dinamicaly的一个位置块来应用try_files指令配置,如下所示:

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

但是当我尝试加载页面时,我在Chrome控制台中收到此消息。

资源被解释为文档但使用MIME类型application / octet-stream传输:" http://33.33.33.33/eci-new/public/rms/product-normalization"。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

有关详细信息,请参阅enter image description here