2016-03-18 4 views
1

Я искал какое-то время, пытаясь работать и не придумал ничего полезного.В Nginx, как совместить и весь URL-адрес и строку запроса и перенаправлять URL-адрес и строку запроса

У меня есть (большой) список URL-адресов из миграции сайта и должен соответствовать всему URL + Query String и перенаправлять на другой URL-адрес.

Насколько я могу видеть только следующие соответствия /mens, но не остальная часть строки запроса.

rewrite "^/mens?brand%5B%5D=27&section%5B%5D=5&price-min=0&price-max=2000&sort=newest" "/t/gender/men" permanent; 

Причина это важно, что у меня есть куча подобных URL, с несколько различных запросов строк, которые должны быть перенаправлены, похоже на ниже, но на самом деле работает ....: -/

rewrite "^/mens/shop?q=road+map+polo"  "/t/category/golf-knits" permanent; 
rewrite "^/mens/shop?q=six+pocket+pant"  "/t/category/golf-pants" permanent; 

#etc... ad noiseam 

Заранее спасибо, Paul.

+0

Не вопрос программирования. Дубликат https://serverfault.com/questions/160790/nginx-rewrite-for-an-url-with-parameters – neuhaus

+0

В следующий раз найдите «аргумент запроса nginx rewrite», – neuhaus

ответ

2

Переменная $request_uri содержит весь URL. Вы можете использовать map, чтобы перевести его в перенаправление.

map $request_uri $target { 
    ~*^/mens/shop\?q=road\+map\+polo /t/category/golf-knits; 
    ~*^/mens/shop\?q=six\+pocket\+pant /t/category/golf-pants; 
} 

server { 
    ... 
    if ($target) { return 301 $target; } 
    ... 
} 

Для получения более подробной информации см. this document.