Nginx URL 重写

Nginx URL 重写

目的:将 URL 重写为应用程序兼容的格式

进度:我从域根目录进行了重写,运行良好,但是当我添加 /foo/ 或 /bar/ 时,我只得到 404,因为它试图匹配我的配置中的该位置。

例如..

http://domain.com/ # 工作正常

http://domain.com/foo/ # 出现 404 - 我认为这是无法匹配位置

我有应用程序网址,并在末尾添加了 $request_uri,但是我希望能够将 /foo/ 或 /bar/ 传递到网址中以使其正常工作。

我尝试过 $request_body $request_uri$1 和不同的组合,但是没有成功,只是 404。

我该怎么做?我需要将哪个 $variable 传递到 url?

下面是一个 URL 示例。不是确切的 URL,但希望足以让您了解情况。

location / {
    rewrite ^/$ pt/Wondering?virtual-webr00t=http://foobar.com&pagename=123/Dispatcher&url-path=$request_uri` last;
}

location /pt/Wondering {

        proxy_pass http://domain.com;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        root    html;

}

答案1

您的问题是您正在使用下面的

rewrite ^/$   # Starts with / and ends with /

何时应该使用

rewrite ^/ # start with / and accepts anything afterwards

区别在于正则表达式。

相关内容