具有不同根的 nginx 正则表达式位置无法按预期工作

具有不同根的 nginx 正则表达式位置无法按预期工作

我有以下两条规则:

location / {
    root /var/www/default;
}

location ~* /myapp(.*)$ {
    root /home/me/myapp/www;
    try_files $uri $uri/ /handle.php?url=$uri&$args;
}

当我浏览myapp/foo它时,它起作用了 - 有点,错误被记录为 404:*3 open() "/var/www/default/handle.php" failed (2: No such file or directory)- 所以它处理正则表达式匹配,但只是没有使用正确的文档根目录 - 这是为什么?

为了记录,我试图让第二个位置处理 /myapp/* 请求,而让其他所有请求由第一个位置处理。

答案1

工作解决方案应该是这样的

location /myapp/ {
    root /home/me/myapp/www;
    try_files $uri $uri/ /myapp/handle.php?url=$uri&$args;
}

我将正则表达式替换为/myapp/因为这两种配置都应该正确完成工作。然后我将替换/handle.php为因为fallback/myapp/handle.php的绝对路径应该是try_fileshttp://example.com/myapp/handle.php

相关内容