目的:将 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
区别在于正则表达式。