Как передать GET параметры в PHP? (Nginx)
location / {
try_files $uri $uri/ /index.php?do=user&po=$1$is_args$args;
}
Необходимо, передать свои + те что будут в URL.
К примеру так, как выше написано, в PHP:
$_GET
Содержит массив из 2: do и po.
Если пользователь допишет свои параметры, к примеру:
/index.php?do=user&po=2&g=5
В PHP по прежнему $_GET будет содержать 2 параметра.
Не понимаю, как сделать чтобы и свои были по умолчанию и пользовательские?
Чтобы с пользовательскими GET можно было работать...
Ответы (1 шт):
Нет, если переходить в новый location, используя в качестве последнего параметра директивы try_files URI, а не имя именованного локейшена, URI будет использован именно в том виде, в каком он указан в конфигурации, аргументы запроса сохранены не будут, так что @AlexeyTen в данном случае не прав.
Можно использовать блок map:
map $is_args $has_args {
`?` `&`;
}
server {
...
location / {
try_files $uri $uri/ /index.php?do=user&po=$1$has_args$args;
}
Или можно пройти через дополнительный именованный location и добавить аргументы запроса к уже существующим с помощью директивы rewrite. Но в таком варианте переменная $1 будет перезатёрта при выполнении rewrite, и в том регулярном выражении, откуда она берётся, надо использовать именованные группы захвата (named captures), то есть вместо (...) использовать, например, (?<po>...). В таком случае вместо переменной $1 результат захвата попадёт в переменную $po.
location / {
try_files $uri $uri/ @index;
}
location @index {
rewrite ^ /index.php?do=user&po=$po;
}