Como redirecionar urls antigos feios como http://example.com/store/view.jsp?product=foo com URL limpa – http://example.com/store/view/product/foo usando o proxy reverso nginx?

Você precisa usar HttpRewriteModule sob o servidor web nginx. Este módulo torna possível alterar URI usando expressões regulares (PCRE), e para redirecionar e selecionar a configuração dependendo de variáveis. A sintaxe é a seguinte para chage URI de acordo com a expressão regular ea seqüência de substituição.

 
 Reescrever regex substituição bandeira

Observe que as diretivas são executadas em ordem de aparecimento no arquivo de configuração. Aqui está a configuração de amostra para o mesmo:

 
 # Rewrite urls
 Reescrever ^ / store / view / product /(.*) /store/view.jsp?product=$1 permanente;
 ## Descomente a seguinte linha para redirecionar urls antigos com HTTP / 301 ##
 # Rewrite "^ / store / view.jsp? Product = (. *) $" ^ / Store / view / product / $ 1 permanente;

Aqui está outro exemplo com a diretriz try_files que verifica a existência de arquivos em ordem e retorna o primeiro arquivo encontrado:

 
 ### Incluir dentro do bloco de diretório do servidor {...} ###
 ### Só funciona com a versão Nginx 0.7.65+ ###
         Localização / {
                 Index store.php;
                 Try_files $ uri $ uri / @ourcleanurls;
         }
         # Reescrever urls #
         Localização @ourcleanurls {
                 Reescrever ^ / media /(.*) /includes/cache/helper.php?m=$1&images=1 último;
                 Reescrever ^ / css /(.*) /includes/cache/helper.php?m=$1&css=1 último;
                 Reescrever ^ / js /(.*) /includes/helper.php?m=$1&js=1&c=false last;
                 Reescrever ^ / (. *) /store.php?pid=$1 último;
         }

Você precisa recarregar o servidor nginx usando o seguinte comando:
# /usr/local/nginx/sbin/nginx -s reload

Como posso testar novas alterações?

Você pode usar o comando curl para testar novas alterações, incluindo HTTP / 1.1 301 Mensagem movida:
$ curl -I http://example.com/store/view/product/foo
$ curl -I http://example.com/store/view.jsp?product=foo

Anúncios