Como realizar redirecionamento interno com mod_rewrite em apache
- 4416
- 465
- Mr. Mitchell Hansen
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 sitePadrã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:
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:
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ê!
- « Redirecionar solicitações de site com base no navegador usado (Chrome, Firefox ou IE)
- 5 maneiras de esvaziar ou excluir um grande conteúdo de arquivo no Linux »