Перенаправление URL-адреса Haproxy 301 при условии строки запроса

Использование Haproxy 1.5.12, работающего на Ubuntu 12.04

Мой веб-сайт получает много запросов вроде этого:

http://www.example.com/foo/bar/mypage.php?gallery=&position=3

правильный URL должен быть:

http://www.example.com/foo/bar/mypage.php?gallery=photogallery&position=3

Мне удалось переписать запросы на правильный URL, Но похоже, что ничего не работает, так что я явно чего-то упускаю.

Есть предложения?

Спасибо

2
задан 13 April 2017 в 15:14
1 ответ

Вы можете достичь того, что ищете, используя 3 строки конфигурации, которые используют ключевое слово http-request .

Первая устанавливает фиктивный заголовок, который мы будем использовать в следующих двух.

http-request set-header X-Location-Path %[capture.req.uri] if fix_gallery

Вторая выполняет замену, необходимую для исправления запроса URL.

http-request replace-header X-Location-Path (.*)gallery=&(.*) \1gallery=photogallery&\2 if fix_gallery

Последняя строка указывает направление на измененный URL.

http-request redirect location http://www.example.com/%[hdr(X-Location-Path)] if fix_gallery

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

http-request redirect location https://%[hdr(host)]/%[hdr(X-Location-Path)] if fix_gallery { ssl_fc }
http-request redirect location http://%[hdr(host)]/%[hdr(X-Location-Path)] if fix_gallery !{ ssl_fc }
2
ответ дан 3 December 2019 в 11:33

Теги

Похожие вопросы