Приветствую!
Есть пачка урлов (больше 200 штук, у которых меняются цифры в конце) с параметрами, пример:
site.ru/index.php?route=product/category&path=90_128
Необходимо сделать редирект 301 на другой сайт (склейка, страницы цели имеют другие адреса).
Из-за знака вопроса условия не проходят.
Хотел сделать через location, по концу урла (path=90_128) - так тоже не срабатывает.
Как для такого url сделать условия под location?
И не будет срабатывать, так как location использует URI в нормализованном виде и без аргументов. С rewrite аналогичная ситуация. Простой вариант решения проблемы:
Регулярку следует подправить под реальное положение дел. И помните, If Is Evil! Правильнее было бы реализовать через ngx_http_map_module, но не видя всей картины сложно советовать.
Спасибо за ответ! При таком location у меня отдаёт index.php почему-то.. почитал про map, он заменяет переменные, то есть я проверяю uri и назначаю второй переменной соответствующий адрес, а как выполнить редирект.. не соображу.. вторым правилом, в контексте server через location? Запутано как-то, или можно выполнить редирект в map?
При таком location у меня отдаёт index.php почему-то
По всей видимости у вас есть location для PHP, заданный модификатором «~». У регулярных выражений приоритет выше, поэтому приведённая в пример конфигурация не срабатывает. Перенесите её целиком или только if внутрь location для PHP и проверьте.
или можно выполнить редирект в map?
Нельзя. Но преимущество map в большей гибкости. Можно делать анализ сразу нескольких переменных и на выходе получать множество возможных значений, а не только true/false.
вторым правилом, в контексте server через location?
Огромное спасибо за помощь! Так я и не осилил редиректы на nginx, буду изучать подробнее.. Замучившись меня осенило, что я могу сайт источник перевести на apache и прописать редиректы на mod_rewrite - так и сделал).