Рейтинг:3

Эффект завершающего знака вопроса (?) в заменяющем URI директивы перезаписи nginx

флаг cn

Я пытаюсь понять разницу между переписать ^/search/(.*)$ /search.php?q=$1 и переписать ^/search/(.*)$ /search.php?q=$1?. Разница в отставании ? в заменяющем URI.

Если URI запроса /поиск/яблоко?opt=123 тогда как URI переписываются по-другому?

я думаю для переписать ^/search/(.*)$ /search.php?q=$1 это будет /search.php?q=яблоко&opt=123 и для переписать ^/search/(.*)$ /search.php?q=$1? это будет /search.php?q=яблоко? Но я не уверен.

флаг sv
Возможный ответ https://serverfault.com/a/973708/102173
Logan Lee avatar
флаг cn
@PothiKalimuthu у меня немного более сложный случай.
флаг sv
Ваше предположение, упомянутое в ОП, верно.
Logan Lee avatar
флаг cn
@PothiKalimuthu хорошо, спасибо!
Рейтинг:2
флаг sv

Согласно https://nginx.org/r/rewrite...

Если строка замены включает новые аргументы запроса, предыдущие аргументы запроса добавляются после них. Если это нежелательно, поставив вопросительный знак в конце строки замены избегает их добавления

Вот минимальный код для проверки этого сценария...

# файл конфигурации /etc/nginx/nginx.conf:
События {}

http {
    сервер {
        переписать ^/search/(.*)$ /search.php?q=$1 навсегда;
        # переписать ^/search/(.*)$ /search.php?q=$1? постоянный;
    }
}

Постоянный флаг добавляется только для тестирования. Мы можем сохранить приведенный выше код как nginx.conf и запустите Nginx. завиток вывод для приведенного выше кода подтверждает /поиск/яблоко?opt=123 перенаправит на /search.php?q=яблоко&opt=123.

Аналогично, для второго условия перезаписи...

# файл конфигурации /etc/nginx/nginx.conf:
События {}

http {
    сервер {
        # переписать ^/search/(.*)$ /search.php?q=$1 на постоянный;
        переписать ^/search/(.*)$ /search.php?q=$1? постоянный;
    }
}

завиток вывод для приведенного выше кода подтверждает /поиск/яблоко?opt=123 перенаправит на /search.php?q=яблоко.

Так,

Если URI запроса — /search/apple?opt=123, то как URI переписываются по-другому?

Я предполагаю, что для перезаписи ^/search/(.)$ /search.php?q=$1 будет /search.php?q=apple&opt=123 и для перезаписи ^/search/(.)$ /search.php?q=$1? это будет /search.php?q=apple? Но я не уверен.

Вы правы, и это ожидаемый результат.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.