Como Configurar o Mod_Rewrite do Apache e Ter URLs Amigáveis
O mod_rewrite do Apache é uma maneira fácil e eficiente de manipular URLs. A manipulação de URLs é feita pelo lado do servidor.
Numa explicação simples, com o mod_rewrite, URLs amigáveis, simples e sem caracteres especiais são convertidas em sites.
Como o próprio nome sugere, o que ele faz é reescrever a URL. E isso pode ser uma ótima maneira de limpar e organizar as URLs do seu site.
Neste tutorial, vamos explicar o que é mod_rewrite, por que ele é útil e como configurar a ferramenta numa VPS rodando no Apache.
Conteúdo
Como o Mod_Rewrite Apache funciona?
Todas as vezes que o usuário insere uma URL no navegador, ela é verificada dentro uma lista de regras pré-definidas.
As regras estão presentes para procurar por algum padrão específico ou até mesmo palavras-chaves.
Se uma palavra-chave está presente em uma URL e a regra corresponder, ela é substituída com uma sequência pré-definida – uma nova URL.
O Que Torna o Mod_Rewrite Útil?
A maior vantagem do mod-rewrite é que ele oferece a habilidade de manipular URLs. Principalmente se você tem uma URL complicada e deseja deixá-la limpa em uma nova URL.
Essas novas URLs também são amigáveis ao usuário final e aos motores de busca. Isso significa que eles vão reconhecer essas nova URLs muito mais rapidamente.
Mas o que é uma URL limpa? Vamos dar uma olhada nos exemplos abaixo.
- URL1: http://modrewriteexample.com/client.php?id=A786#234QA
- URL2: http://modrewriteexample.com/client/=A786#234QA/
- URL3: http://modrewriteexample.com/client/Martha/
De todas as três URLS listadas acima, está claro que a terceira é uma URL muito mais fácil de ler e ser melhor entendida pelo usuário do que as outras duas. Neste caso, a URL 3 é uma URL limpa.
Como Configurar Mod_Rewrite numa VPS Linux?
Antes de começarmos, você vai precisar de acesso a sua VPS usando SSH. Se precisar de ajuda nesse processo, use nosso tutorial PuTTy. Agora, vamos partir para a configuração.
1. Instalar o Apache
Vamos usar o Ubuntu para este exemplo. Ele tem um pacote de instalador nativo, que se chama apt-get. Primeirol, vamos atualizá-lo executando o comando:
sudo apt-get update
Agora, podemos proceder com a instalação do Apache. O comando para isso é:
sudo apt-get install apache2
2. Habilitar o Mod_Rewrite
Agora, precisamos habilitar o mod_rewrite. O comando para isso é:
sudo a2enmod rewrite
O comando acima vai habilitar o modo de reescrever ou informar que ele já está em uso. Depois disso, reinicie o Apache.
sudo service apache2 restart
3. Criar o Arquivo .htaccess
As regras para reescrever URLs devem ser pré-definidas. Aqui, o .htaccess aparece. Um usuário pode escrever todas as regras em um arquivo .htaccess.
Ele é usado pelo servidor. Não deve haver erros nesse arquivos, se não o servidor vai apontar o erro. Podemos modificar nossas regras reescritas a qualquer momento.
O arquivo .htaccess deve ser criado na raiz para testar a funcionalidade de reescrever. Para isso, execute o comando:
sudo nano /var/www/html/.htaccess
Isso vai criar o arquivo .htaccess, se ele ainda não tiver sido criado, ou abri-lo, se ele já existir. Agora, podemos salvar e sair. No nano, você pode fazer essa mesma operação apertando CTRL+O para salvar e CTRL+X para sair.
Agora, precisamos abrir o arquivo 000-default.conf localizado no diretório /etc/apache2/sites-enabled/. O comando para fazer isso é:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Dentro deste arquivo, coloque o bloco de texto abaixo usando a linha <VirtualHost *:80>:
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow, deny allow from all </Directory>
Salve o arquivo como você fez com o .htaccess. Para as mudanças acima surtirem efeito, reinicie o Apache como mostrado no final do passo 2.
4. Reescrever a URL
Reescrever a URL é basicamente escolher a URL limpa e convertê-la em caminhos reais que levam ao código ou site esperado. Ela deve ter:
- Uma regra de reescrita pré-definida;
- Um padrão – o padrão fornecido vai agir como uma referência combinada com a URL inserida pelo usuário;
- Linhas de reescrita – ela vai solicitar o caminho que deve ser chamado no momento pedido pelo servidor.
Agora, vamos escrever uma regra de reescrita que vai direcionar o usuário para a página About_us.html, se a URL requisitada for http://ip/Aboutus.
Para escrever a regra de reescrita com sucesso, o motor de reescrita deve estar ligado. Insira o comando abaixo no começo do arquivo .htaccess.
RewriteEngine on
O próximo comando pode ser a nossa regra:
ReWriteRule ^About_us$ Aboutus.html [NC]
A sintaxe pode ser um pouco confusa, então vamos separá-la por partes.
- Na regra acima, “About_us” é o padrão que, quando encontrado e correspondido, será redirecionado para About_us.html.
- “NC” é um sinalizador que faz com que a regra seja insensível a letras maiúsculas ou minúsculas.
- “^” retrata que o texto imediatamente após o endereço de IP é correspondido.
As duas linhas combinadas se pareceriam com isso no arquivo .htaccess:
ReWriteEngine on
ReWriteRule ^About_us$ Abouts_us.html [NC]
E isso é tudo! Criamos com sucesso uma regra mod_rewrite!
Conclusão
URLs fáceis e amigáveis ao usuário tem um papel vital no sucesso de um site. Ter as palavras-chaves é muito importante, não apenas URLs memoráveis, mas você precisa pensar no SEO também.
Existem centenas de regras que você pode criar e escrever. E agora você sabe como fazer isso! Esperamos que você faça bom uso do mod_rewrite. Até o próximo tutorial. 😉
Comentários
August 07 2019
Pode até funcionar, não tentei ainda, mas tem que concordar que é complexo de se fazer. Não tem como fazer de forma mais simples, através do painel principal? Na GoDaddy a URL que se deseja por exemplo, basta colocar a URL que se deseja "esconder" e a que se quer definir . Exemplo "https://contato.site/b5fa448/campanhas-com-videos/modelo-apresentacao-para-empresas-formato-modulo-7" para "http://wagnerguimaraesferreira.com.br" não tem como vcs simplificarem isto? Assim, ao invés de comprar dominios pela GoDaddy para fazer isto, compro aqui mesmo com vcs, uma vez que ja tenho hospedagem. Revejam isto, ok? Obrigado!
September 06 2019
Oi, Wagner. Para entendermos melhor sua dúvida e resolver, peço que entre em contato com o time de suporte dentro do painel de controle de sua hospedagem. Nosso time de suporte está disponível 24/7. Aguardamos seu contato ;)
November 16 2022
Sinto falta do chat do atendimento online, não consigo configurar o arquivo .httacces a explicação e as ferramentas mencionadas foram insuficientes.
November 25 2022
Olá, Samuel! Você tem uma conta aqui na Hostinger? Se tiver, pode falar com o nosso time de Customer Success via chat: https://www.hostinger.com.br/contatos ?