Рейтинг:1

Stop Nginx переписывает все страницы после блока местоположения

флаг gb

Мне приходится переписывать URL-адреса в nginx.conf, которые содержат определенные параметры запроса;

Например:-

местоположение /бренды/примерA {

    если ($arg_cat = "9") {
        возврат 301 /page/brand-filter;
    }

    если ($arg_cat = "38") {
        возврат 301 /page/category/brand-filter;
    }

}

Эти перезаписанные URL-адреса затем перепишут example.com/brands/exampleA/?cat=9 к example.com/page/brand-filter и example.com/brands/exampleA/?cat=38 к example.com/page/category/brand-filter.

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

example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4

Итак, есть ли что-то, что я могу добавить к заявлению о местоположении, чтобы ничего не применялось к чему-либо после примерA - эти перезаписи должны ТОЛЬКО соответствовать параметрам запроса ?cat=.

Richard Smith avatar
флаг jp
Чтобы соответствовать только `/brands/exampleA/`, используйте `location = /brands/exampleA/`
zigojacko avatar
флаг gb
Удивительно, спасибо @RichardSmith, добавив = точно исправил проблему. Добавьте как ответ, если хотите, чтобы я принял решение :)
Рейтинг:1
флаг jp

Ваша конфигурация в настоящее время использует расположение префикса, что означает, что считается, когда запрошенный URI начинается с Значение /бренды/примерA.

Чтобы ограничить совпадение только одним URI, используйте полное совпадение синтаксис:

location = /brands/exampleA/ { ... }

Видеть этот документ для деталей.

zigojacko avatar
флаг gb
Сработало отлично, спасибо. Спасибо за ссылку на документ, а также я пытался искать, но не был уверен, что искать на самом деле, поэтому не наткнулся на это, но это идеально

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

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