nginx if 指令从 0.7 升级到 1.0.2 后停止工作

nginx if 指令从 0.7 升级到 1.0.2 后停止工作

我将 nginx 服务器从 0.7.x 升级到 1.0.2,并将旧配置文件复制到新 nginx 服务器。除了 if 指令外,其他一切都运行正常。旧配置文件中有以下代码块,似乎无法与最新的 nginx 版本配合使用。

location /myapp {
         if (!-e $request_filename) {
                rewrite  ^/myapp/(.*)$  /myapp/index.php?q=$1  last;
                break;
          }
          root /var/www;
          index index.php index.html index.htm;
 }

知道什么地方出了问题吗?

附言:是的,我知道假如邪恶我确实尝试过探索 try_files,但我无法弄清楚如何仅传递 myapp/ 之后的 URI 部分,而不是将输入 URI 传递到 index.php,如下所示:try_files $uri index.php?q=$uri

答案1

您想将所有请求重定向到一个公共前端控制器。

location / {
    index index.php;
    try_files $uri $uri/ @handler; ## If missing pass the URI to front handler
}

location @handler {
    rewrite / /index.php;
    # Rewrite for @ErJab:
    # rewrite ^/myapp/(.*)$  /myapp/index\.php?q=$1  last;
}

location ~ .php$ { ## Execute PHP scripts 
    fastcgi_pass   127.0.0.1:9000;
}

相关内容