Как передать 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;
}