Я хочу добавить один параметр в строку запроса $. Теперь у меня есть этот конфиг
server {
server_name example.com;
listen 80;
return 301 http://test.example.com$request_uri;
}
, но я хочу добавить в запрос test = 1
. Есть случаи использования:
http://example.com =>
http://test.example.com?test=1
http://example.com/example =>
http://test.example.com/example?test=1
http://example.com/example/?var=1 =>
http://test.example.com/example/?var=1&test=1
Я попытался разделить $ request_uri на $ uri и $ query_param и получил
return 301 http://test.example.com$uri$query_string;
Но я не могу просто добавить test = 1 в эту строку. Если я добавлю ? Test = 1
так
в третьем случае я получу http://test.example.com/example/?var=1?test=1
. Если я добавлю & test = 1
в первом и втором случаях, я получу http: //test.example.com&test=1
и http: // test. example.com/example&test=1
.
Теперь я проверяю свою $ query_string по следующим правилам:
if ($query_string ~ ^$) {
return 301 http://test.example.com$uri?test=test;
}
if ($query_string ~ ^.+$) {
return 301 http://test.example.com$uri?$query_string&test=test;
}
Но я думаю, что есть более аккуратное решение для этой задачи.
റിട്ടേൺ
എന്നതിനുപകരം നിങ്ങൾക്ക് മാറ്റിയെഴുതാം
ഉപയോഗിക്കാം. തിരുത്തിയെഴുത്ത്
നിർദ്ദേശത്തിൽ ഇതിനകം തന്നെ അധിക ചോദ്യ സ്ട്രിംഗുകൾ ശരിയായി കൂട്ടിച്ചേർക്കുന്നതിനുള്ള യുക്തി അടങ്ങിയിരിക്കുന്നു.
ഉദാഹരണത്തിന്:
rewrite ^ http://test.example.com$uri?test=1 permanent;
പകരം സ്ട്രിംഗിൽ പുതിയത് ഉൾപ്പെടുന്നുവെങ്കിൽ അഭ്യർത്ഥന വാദങ്ങൾ ,. മുമ്പത്തെ അഭ്യർത്ഥന ആർഗ്യുമെൻറുകൾ അവയ്ക്ക് ശേഷം ചേർക്കുന്നു