2014-11-12 3 views
0

Это мой первый вопрос в StackOverflow, поэтому, пожалуйста, несите меня.как сделать nginx переписать с URL-адреса с параметрами get

Nginx предлагает множество различных сайтов для нас, и у нас есть много перенаправлений от миграции клиентов от разных поставщиков и т. Д. Мы создали каталог/includes, в котором размещены файлы перенаправления для каждого домена, который мы переносим. Иногда нам нужно будет написать редирект с URL, который содержит получить параметры:

http://example.com/content/default.aspx?NewsId=28 

Чтобы сделать это, мы делаем это в Nginx/включает в себя файл с именем example.com-перенаправляет

location ^~ /content/default.aspx { 
    if ($args ~ "NewsId=28") { rewrite^http://example.com/news? permanent; break; } 
    # add more statements like the one above 
} 

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

location ^~ /content/default.aspx { 
    if ($args ~ "NewsId=28") { rewrite^http://differentexample.org/news? permanent; break; } 
} 

Я пробовал пару различных решений, все из которых давали мне синтаксические ошибки. Никто в моей компании больше не является экспертом nginx, поэтому я мог бы действительно помочь в решении этой проблемы. Я добавил if ($host ~ "example.com") в блок местоположения, и это дало мне ошибку. И я попытался добавить блок местоположения в блок if ($host ~ "example.com"). Оба раза nginx сказал мне, что я не могу это сказать.

Обычно я нахожу свой ответ в обширной базе знаний, которая является интернетом, но, похоже, бросается в глаза на решение этой проблемы, и у нас заканчивается время, прежде чем мы запустим этого клиента.

ответ

0

Вместо использования, если используется переменная. В конфигурации виртуального хоста вы устанавливаете эту переменную. В включаемого с места вы его используете:

server { 
    ... 
    set $redirect_host "example.org"; 
    include /includes/news28.conf; 
    ... 
} 

# include part 
location /foo { 
    if ($args ~ "NewsId=28") { rewrite $scheme://$redirect_host/news? permanent; } 
} 

Конечно, вы должны установить эту переменную также в конфигурации сервера хоста уже с помощью этого включают. Надеюсь это поможет.

Смежные вопросы