Haproxy 301 redirecionamento de URL na condição da cadeia de consulta

2

Usando o Haproxy 1.5.12 rodando no Ubuntu 12.04

Meu site recebe muitos pedidos como este:

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

o URL correto deve ser:

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

Tive êxito ao reescrever solicitações para o URL correto, mas também gostaria de emitir um redirecionamento 301 para os clientes.

Seguindo esta postagem: redirecionar o URL reescrito usando o haproxy Eu tentei:

acl fix_gallery url_sub gallery=&
reqrep (.*)gallery=&(.*) gallery=photogallery&
redirect prefix / code 301 if fix_gallery

Tentando ser criativo, tentei:

acl fix_gallery url_reg (.*)gallery=&(.*)
acl fix_gallery urlp_reg(gallery) -m str ""
acl fix_gallery urlp_reg(gallery) -m len 0

e muito mais. Mas nada parece funcionar, então, obviamente, estou sentindo falta de algo.

Alguma sugestão?

Obrigado

    
por jeremyjr 30.03.2016 / 17:05

1 resposta

2

Você pode conseguir o que procura usando três linhas de configuração que aproveitam a palavra-chave http-request .

O primeiro define um cabeçalho fictício que usaremos nos dois seguintes.

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

O segundo realiza a substituição necessária para corrigir a consulta de URL.

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

A linha final faz a direção para o URL alterado.

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

Isso funciona se você tiver apenas um domínio, mas é possível criar http-request redirect linhas que funcionarão com qualquer domínio e esquema.

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 }
    
por 30.03.2016 / 18:52