2

我有以下主机配置文件的一部分。

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

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

location ~ \.php$ {
    include             fastcgi_params;
    fastcgi_pass        127.0.0.1:9000;
    fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

如何仅使用 nginx 规则从 $_SERVER['REQUEST_URI'] 中删除“/backend”?

4

1 回答 1

0

使用 map 指令创建一个新的请求 uri 变量,然后使用这个新变量设置 fastcgi_param REQUEST_URI。经过测试,它可以工作。

### update REQUEST_URI
map $request_uri $new_request_uri {
  default $request_uri;               # for frontend request, still use $request_uri
  ~^/backend(?P<suffix>.*)$ $suffix;  # for backend request, only use the suffix after "/backend"
}

server {
  ...

  location ~ \.php$ {
    include        fastcgi_params;
    fastcgi_pass        127.0.0.1:9000;
    fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $new_request_uri;
  }
}
于 2013-04-02T05:26:32.723 回答