SEO · 5 min read · Jan 02, 2026

Os Usos Úteis do Mod Rewrite

Os Usos Úteis do Mod Rewrite

Autor: Mike Ems

Neste tutorial, vou ensinar o que é mod rewrite e alguns exemplos de seus usos. Mod rewrite é uma ferramenta poderosa e uma das maneiras mais simples de tornar seu site mais amigável para SEO.

O que é Mod Rewrite?

Mod rewrite é uma parte dos servidores apache que pode reescrever URLs solicitadas em tempo real. Como suporta um número infinito de regras que, por sua vez, têm condições de regra ilimitadas, é muito flexível e um importante mecanismo de manipulação de URLs. Pode ser usado para usuários da internet e para URLs amigáveis aos motores de busca. Isso aumenta a chance de o site baseado em banco de dados ser indexado.

Habilitando / Instalando Mod Rewrite

A primeira coisa que queremos fazer é garantir que temos mod_rewrite em nosso servidor. Por padrão, o Apache tem mod_rewrite instalado, mas não habilitado. A maneira mais fácil de testar se o mod_rewrite está habilitado em seu servidor é criar um arquivo .htaccess em um diretório de teste, como /modrewrite-test/.htaccess, com o seguinte conteúdo:

Options +FollowSymLinks  
RewriteEngine On

Agora tente navegar até o subdiretório. Uma de duas coisas pode acontecer:

  • Sem erros. Parabéns, o motor mod_rewrite agora está habilitado.
  • 500, Erro Interno do Servidor. Se você receber esta mensagem, então o mod_rewrite não foi instalado/habilitado em seu servidor.

Se você descobrir que o mod_rewrite não foi instalado em seu servidor, siga estas etapas.

  1. Encontre o arquivo httpd.conf (normalmente você o encontrará em uma pasta chamada conf, config ou algo semelhante)
  2. Dentro do arquivo httpd.conf, descomente a linha LoadModule rewrite_module modules/mod_rewrite.so (remova o sinal de jogo ‘#’ na frente da linha)
  3. Também encontre a linha ClearModuleList e descomente, depois encontre e certifique-se de que a linha AddModule mod_rewrite.c não esteja comentada.

Após essas etapas, reinicie seu servidor apache com o seguinte comando.

/etc/init.d/httpd restart

Agora você deve ter o mod_rewrite habilitado com sucesso. Certifique-se de testar o mod_rewrite novamente assim que o servidor apache for reiniciado.

Usando Mod Rewrite Para Sempre Remover / Adicionar WWW

Um problema facilmente corrigido que muitos sites têm é resultados duplicados em motores de busca. Em qualquer motor de busca, http://www.example.com/ e http://example.com são dois sites completamente diferentes. Isso é um grande problema porque o conteúdo do seu site é identificado como conteúdo duplicado, e isso reduz suas classificações nos motores de busca. Usando nosso novo amigo, mod_rewrite, podemos avaliar esse problema.

No topo de qualquer arquivo .htaccess, você precisa ativar o Mod Rewrite. Isso deve sempre estar no topo do seu arquivo .htaccess. Você só precisa ativar o Mod Rewrite uma vez.

RewriteEngine On

Além disso, você precisa definir sua Rewrite Base. Normalmente, este é o diretório em que o arquivo .htaccess está localizado. Se o seu arquivo .htaccess estiver localizado na sua pasta raiz, sua Rewrite Base seria assim:

RewriteBase /

Agora, existem duas opções a escolher. Você pode optar por sempre remover o www, ou sempre mantê-lo. Para sempre remover www (meu método preferido), crie um arquivo .htaccess em seu diretório raiz. Dentro desse arquivo, adicione o seguinte:

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]  
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Da mesma forma, se você quiser sempre adicionar www, adicione o seguinte ao seu arquivo .htaccess:

RewriteCond %{HTTP_HOST} ^example.com$  
RewriteRule (.*) http://www.example.com$1 [R=301]

Certifique-se de mudar example.com para seu domínio.

Usando Mod Rewrite Para Limpar Seus URLs

O uso mais popular do Mod Rewrite é usá-lo para limpar os URLs do seu site. Como você pode ou não saber, os motores de busca não se importam particularmente com URLs com muitos argumentos, como muitos sites servem. Exemplo:

http://www.example.com/index.php?p=about

Com o poder do módulo mod_rewrite do apache, podemos tornar este URL muito mais limpo.

http://www.example.com/about.html

Para conseguir isso, temos que ver nosso bom amigo expressões regulares. Eu sei que você está realmente animado agora. Para realizar a reescrita acima, adicionei o seguinte ao meu arquivo .htaccess após as linhas de adicionar/remover www.

RewriteRule ^([^/]+).html$ /index.php?p=$1 [QSA,L,NC]

Vamos dar uma olhada mais de perto nesta linha para que possamos realmente entender o que ela está fazendo.

([^/]+)

Esta é a expressão regular para corresponder a qualquer coisa, exceto uma barra. Esta é a maneira mais fácil de corresponder a qualquer coisa que caia entre duas barras ao lidar com reescrita de URLs.

.html

Isso reescreve o URL para ter .html no final. Isso dá a aparência de um arquivo .html regular ao seu arquivo php.

/index.php?p=$1

Esta é a parte da reescrita que é a localização de origem. Cada vez que você tem uma expressão regular na primeira parte correspondendo a uma determinada string, você deve referenciá-la nesta parte. O $1 refere-se à primeira expressão regular na primeira metade da linha. Portanto, qualquer valor atribuído à variável p é colocado onde a primeira expressão regular está na primeira metade da linha.

Se você quiser que seu URL pareça um diretório, você usaria esta linha em vez da que foi dada anteriormente.

RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L,NC]

Isso retornaria URLs como esta:

http://www.example.com/about/

Adicionando uma Barra Final aos Seus URLs

O principal objetivo de adicionar uma barra final aos seus URLs é que isso aumenta o desempenho do servidor. Quando uma barra final é adicionada ao final de um URL que não termina em uma extensão de arquivo, isso informa ao servidor para fazer apenas uma chamada a si mesmo, diminuindo assim o tráfego do servidor.

Para sempre adicionar uma barra final a um URL que não termina em uma extensão de arquivo, como http://www.example.com, adicione o seguinte ao seu arquivo .htaccess em seu diretório raiz.

rewriteCond $1 !/$  
rewriteCond %{REQUEST_FILENAME}/ -d  
rewriteRule (.+) http://www.example.com/$1/ [R=301,L]

A primeira linha verifica se não há barra final. A segunda linha verifica se existe um diretório com o URL fornecido se a barra final for adicionada. A terceira linha adiciona a barra final e redireciona o usuário.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.