В моем файле конфигурации сайта по умолчанию у меня есть следующее перенаправление для принудительного применения https:
server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}
Я хочу добавить поддомен, но перенаправить его на сайт с параметром. например fr.example.com -> https://example.com?lang=fr
Если я сделаю:
return 301 https://example.com$request_uri&lang=fr;
Он добавит '& lang = fr', есть ли другие параметры в $ request_uri или не.
Как я могу условно определить "?" или '&' в зависимости от содержимого $ request_uri?
Я пробовал следующее:
server {
listen 80;
server_name fr.example.com;
if ($request_uri ~ ""){
return 301 https://example.com?tlang=fr;
}
return 301 https://example.com$request_uri&tlang=fr;
}
но таким образом сайт провалился в целом.
Спасибо
Прежде всего, $request_uri
не содержит аргументов запроса для запроса.
Есть два варианта:
$args
после lang
аргумент:return 301 https://example.com?lang=fr&$args:
В http
уровень, вы определяете карту:
map $args $redirargs {
"~.+" $args&lang=fr;
default lang=fr;
}
А затем используйте
return 301 http://example.com$request_uri?$redirargs;