Reescrita de URL

Reescrita de URL
O URL que um cliente solicita pode ser alterado inteiramente ou faz com que as regras de reescrita nginx. Além de direcionar o fluxo das páginas de execução do Nginx, o objetivo principal de atualizar um URL é alertar os clientes de que os serviços que eles estão buscando. Os URLs são reescritos usando os comandos de retorno e reescrita no nginx. A mesma tarefa de reescrever os URLs é realizada por ambas as diretrizes. A diretiva de reescrita é mais forte que a diretiva de retorno, pois pode lidar com uma reescrita complicada sem a necessidade de analisar os URLs. Examinaremos neste guia sobre como o nginx usa os comandos de retorno e reescrever para modificar ou reescrever o URL.

É altamente recomendável atualizar a instância Nginx atual para a versão superior, porque esta instrução é otimizada para o nginx versão 1.0.1 e acima. No entanto, algumas das operações e sintaxes ainda podem se aplicar às versões antes daquele mencionado.

Diretiva de retorno no Ubuntu 20.04

O comando de retorno fundamental e bem compreendido é usado para realizar a reescrita de URL. Embora não empregue as expressões regulares, pode analisar as variáveis ​​que são retiradas do caminho do bloco de localização. Normalmente, a diretiva de retorno é usada para redirecionar o URL da solicitação para um lugar diferente. Como resultado, freqüentemente emprega os códigos de status HTTP como 301 para redirecionamento contínuo e 302 para redirecionamento temporário. Os exemplos dos casos de uso da diretiva de retorno são mostrados nos seguintes fragmentos de código:

Implementação da diretiva de retorno na configuração do servidor

Ao mudar seu site para um novo domínio e redirecionar todos os URLs antigos para o novo domínio, a diretiva de retorno no ambiente do servidor é útil. Tornar seu site para redirecionar para a versão "www" ou a versão "não www" também ajuda na canonalidade do URL.

A diretiva de retorno no contexto anterior do servidor altera o URL que se destina ao www.Urlinux.com site que é o domínio antigo para o www.Urlinux.com site, que é o novo domínio. Quando o nginx vê um URL que contém o www.Urlinux.com Site, ele imediatamente interrompe o processamento da página e fornece ao cliente um código 301-RESPONSE e reconecta o URL. O $ esquema e $ solicitação URI são as duas variáveis ​​utilizadas na diretiva de retorno. O $ solicitação O URI variável inclui o URI completo com quaisquer parâmetros. E a $ esquema A variável é empregada para definir o esquema de URL (http ou https). Ao reescrever o URL, lembre -se de que ambas as variáveis ​​recuperam essas informações do URL de entrada.

Implementação da diretiva de retorno na configuração de localização

Em algumas circunstâncias, o encaminhamento das páginas é preferível em lidar com domínios. Você pode redirecionar as páginas para um local diferente usando a diretiva de retorno encontrada dentro do bloco de localização.

Quando um URL de solicitação corresponde exatamente ao padrão /artigos /amostras-nginx no exemplo, o nginx redireciona a solicitação para o novo https: // linux.com/nginx/context-nginx/ endereço. Você também pode mudar a posição de tudo por um determinado caminho. O exemplo a seguir demonstra como redirecionar as páginas marcadas como "/amostras" para https: // linux.com/idiomas.

Reescrita Diretiva no Ubuntu 20.04

A capacidade interna do servidor da web de reescrever os URLs sem divulgar o método principal para a máquina cliente é realizada através da diretiva de reescrita. Ele usa as expressões e conformidade regulares à sua sintaxe. O espaço reservado para substituição substitui o URL correspondente. O espaço reservado Regex permite que as expressões regulares sejam usadas. E a bandeira permite que o fluxo de execução seja alterado. As bandeiras quebram, permanentes, redirecionadas e por último são atualmente usadas nas diretivas de reescrita.

Os detalhes da sintaxe são fornecidos no seguinte:

  • Regex: a expressão regular construída usando o PCRE que é aplicado ao URL das solicitações recebidas.
  • Substituição-URL: Se o URL solicitado corresponder à expressão regular, o URL solicitado será alterado usando a string de substituição.
  • sinalizador: se o comando de reescrita deve ser processado ainda mais depende do valor da bandeira.

Observe que apenas os códigos 301 ou 302 podem ser devolvidos pela diretiva de reescrita. Após a diretiva de reescrita, uma diretiva de retorno deve ser incluída explicitamente se você quiser retornar algum código extra.

Implementação da diretiva de reescrita para página estática

Veja o caso em que deseja alterar o URL de uma página, como https: // linux.com/nginx-amostras para https: // linux.com/outra página.html. No bloco de localização a seguir, uma diretiva de reescrita é fornecida para realizar a mesma tarefa.

De acordo com a localização do comando de localização = /nginx-amostras, apenas os URLs com o prefixo exato /nginx-amostras correspondem ao bloco de localização. O URL solicitante é examinado pelo Nginx para as amostras “/nginx?$ ”Padrão. Os significados específicos dos personagens "^", "?”, E“ $ ”são empregados para definir o padrão. A string que precisa ser combinada começa com “^”. O fim da string a ser combinado é indicado pelo símbolo "$". O sinal de modificador não greedoso é “?”.

Depois que uma partida é encontrada, um modificador que não é uma grades para de procurar padrões. Se o URI solicitado corresponder ao padrão, o “Otherpage.html ”é substituído. A reescrita também termina porque a restrição de reescrita termina com uma pausa. Mas a solicitação modificada não é encaminhada para um local diferente.

Implementação da diretiva de reescrita para página dinâmica

Agora, considere uma página dinâmica em que a parte dinâmica é id = 11: https: // www.Linux.com/linux-usuário.php?id = 11 (uid). Se você usar a maneira mais recente de reescrever os URLs, precisará de 10 diretivas de reescrita para cada um de seus 10 usuários. Em vez disso, é viável extrair os componentes da URL em variáveis ​​e utilizar essas variáveis ​​para criar um único comando de reescrita que lida com todas as páginas dinâmicas.

Com o comando de localização "Local = /Linux-User", o Nginx é instruído a pesquisar a diretiva de localização com um URL que possui o prefixo " /linux-user". Nginx digitaliza o URL solicitado para o “usuário do Linux/([0-9]+)/?$ ”Padrão. A gama de caracteres na expressão regular entre colchetes “^[0-9]+” está entre 0 e 9. Um personagem ou caracteres correspondentes é indicado pelo símbolo "+". Na ausência do sinal "+", a expressão regular identifica apenas os caracteres únicos como 5 ou 8, mas não 25 ou 44. Os parênteses da expressão regular () marcam a referência de volta. Esta referência de fundo é mostrada pelo "$ 1" no "usuário do Linux.php?id = $ 1 ”URL de substituição.

Conclusão

As diretivas de reescrita ou devolução agora podem ser usadas para reescrever os URLs. Os exemplos de reescrita fornecidos neste curso são simples de compreender. Como mostrado nos exemplos, a diretiva de retorno é usada para informar o navegador e os rastreadores de mecanismo de pesquisa da localização da página. Embora a diretiva de reescrita possa ser usada para abstrair a operação de reescrita de URL sem aliviar o navegador do que está acontecendo nos bastidores.