Como realizar redirecionamento interno com mod_rewrite em apache

Como realizar redirecionamento interno com mod_rewrite em apache

Neste artigo e no próximo, explicaremos como usar o MOD_REWRITE, para mapear certas solicitações HTTP para outras páginas em um site ou para um URL externo.

Em outras palavras, este conhecido módulo Apache permitirá redirecionar um URL para outro, que ilustraremos através de exemplos práticos.

Leia sugerida: 5 dicas para aumentar o desempenho do seu servidor da Web Apache

OBSERVAÇÃO: Os exemplos abaixo assumem que você está pelo menos um pouco familiarizado com Expressões regulares compatíveis com Perl (Pcre). Como esse tópico está fora do escopo deste artigo, consulte o Perl 5 versão 24.0 documentos para obter mais detalhes sobre o PCRE.

Antes de prosseguir, verifique se o módulo de reescrita está carregado. Embora este seja o comportamento padrão em CENTOS e distribuições semelhantes, em Debian e derivados, você precisará carregá -lo manualmente da seguinte forma:

# a2enmod reescrita 

Configurando o Apache para usar o módulo Mod_rewrite

Para simplificar, vamos usar o site padrão em um CENTOS 7 caixa (IP 192.168.0.100) para explicar como usar mod_rewrite (Documentroot: /var/www/html, arquivo de configuração: /etc/httpd/conf/httpd.conf).

Para que o Apache use este módulo, adicione a seguinte linha ao arquivo de configuração:

RewriteEngine 

É importante observar que essa configuração não será herdada por hosts virtuais na mesma caixa.

Assim, você precisará adicionar RewriteEngine para cada host virtual onde você deseja usar regras de reescrita.

Redirecionamento interno: mapeando um URL para outro no mesmo host virtual

Um redirecionamento interno é o exemplo mais simples de mod_rewrite. Se você deseja redirecionar todos os pedidos para padrão.ASPX para índice.html, Adicione a seguinte linha (também conhecida como regra de reescrita) em RewriteEngine sobre:

Rewriture "^/Padrão \.ASPX $ ""/índice.html " 

E não se esqueça de reiniciar o Apache para que as mudanças tenham efeito.

Isso pode ser útil se o seu site foi originalmente projetado usando Asp e depois mudou para a planície Html5. Os mecanismos de pesquisa terão o .ASPX arquivo indexado, mas esse arquivo não existe mais.

Nesse caso, você precisará encontrar uma maneira de redirecionar a solicitação para que seus visitantes em potencial não encontrem uma página de erro. Para testar, vamos criar um arquivo html simples chamado índice.html dentro /var/www/html com o seguinte conteúdo:

    Novo site   

Padrão.ASPX estava aqui, mas agora é índice.html

O Caret e dólar Os sinais causarão a expressão regular para corresponder a qualquer string que começa com /padrão e terminando com .ASPX, respectivamente.

Leia sugerida: Instale mod_pagespeed para acelerar o desempenho do Apache até 10x

Agora inicie seu navegador e aponte para 192.168.0.100/padrão.ASPX. Se as coisas acontecerem como o esperado, o Apache deve servir índice.html em vez de.
No entanto, o usuário final ainda verá padrão.ASPX Na barra de endereços, fazendo com que a mudança seja totalmente transparente:

Mapeando URL para outra página no domínio

Se você deseja o URL na barra de endereços para mostrar que o servidor está realmente servindo índice.html em vez de uma página chamada padrão.ASPX, adicionar [R, l] até o final da regra de reescrita da seguinte forma:

Rewriture "^/Padrão \.ASPX $ ""/índice.html "[r, l] 

Aqui [R, l] são duas bandeiras opcionais que indicam que um redirecionamento HTTP completo deve ser emitido para o navegador (R) e que nenhuma regra adicional deve ser processada:

Mapeando URL para a página de índice real

Observe como a barra de endereços agora mostra índice.html, Como esperado, em vez de padrão.ASPX Como fez antes.

Resumo

Neste artigo, explicamos como usar o mod_rewrite para realizar redirecionamento interno. Fique atento para o próximo post, onde aprenderemos a redirecionar para um recurso que foi movido para um servidor diferente e como exibir conteúdo personalizado com base no navegador do usuário. Até então, consulte o Apache 2.4 documentos para uma lista completa das bandeiras de reescreção disponíveis.

Como sempre, sinta -se à vontade para usar o formulário de comentário abaixo se tiver alguma dúvida ou feedback sobre este artigo. Estamos ansiosos para ouvir de você!