2012-05-01 3 views
16

В настоящее время я использую Haproxy для балансировки нескольких узлов express.js. Я знаю, что можно перенаправить с помощью express.js, но я надеялся сделать это с Haproxy.Haproxy redirect www to non-www

Мне было интересно, как я могу сделать постоянную переадресацию с www.mysite.com на mysite.com?

ответ

32
redirect prefix http://example.com code 301 if { hdr(host) -i www.example.com } 

Пожалуйста, смотрите документацию redirect prefix правила для получения дополнительной информации.

Если вы используете более новую версию HAProxy, то есть по крайней мере 1,6, вы можете использовать более общий синтаксис, который позволяет перенаправить любой хост, а не только явно с именем

http-request redirect prefix http://%[hdr(host),regsub(^www\.,,i)] code 301 if { hdr_beg(host) -i www. } 

Здесь мы используем regsub фильтр для динамического генерации правильного имени хоста без префикса www..

В случае, если вы хотите, чтобы выполнить переадресацию наоборот, то есть, чтобы добавить www, если его нет уже, правило становится проще:

http-request redirect prefix http://www.%[hdr(host)] code 301 unless { hdr_beg(host) -i www. } 
+0

Вы должны добавить 'код 301' в примерах на основание для согласованности с первым примером – bblue

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