我有
rewrite (?i)^/museums/Andorra /search-results?country=ad&page=$arg_page break;
// 246 more similar rewrites for other country codes.
proxy_pass http://127.0.0.1:7001;
然而,当我去 /museums/Andorra&page=1
浏览器中的 REQUEST_URI
中的代理应用设置为 /search-results?country=ad&page=
nginx有点老了:1.14.2,如果有关系的话。然而,这个2013年的答案 https:/stackoverflow.coma17739990308851。 似乎暗示着 $arg
重写的替换部分中的变量应该是可以的,我已经重写了(?i)^museumsAndorra search-results?country=ad&page=$arg_page break; / 246其他国家代码的类似重写。
你是正确的 rewrite
可以使用 $arg_
在重写的URI中加入参数,尽管你不一定需要。
有两个问题。
你不需要在URI中添加 &page=$arg_page
到重写的URI的结尾,如 rewrite
将自动附加原始查询字符串,除非重写后的URI以 ?
. 所以你现有的 rewrite
语句将产生 /search-results?country=ad&page=1&page=1
(假设 $arg_page
变量被设置)。)
使用其中之一。
rewrite (?i)^/museums/Andorra /search-results?country=ad break;
或。
rewrite (?i)^/museums/Andorra /search-results?country=ad&page=$arg_page? break;
见 本文件 以了解详情。
你的测试URL不包含查询字符串。
请使用。
/museums/Andorra?page=1