Removendo extensões .php e .html com .htaccess

Recentemente eu necessitava remover as extensões do meu site para deixar as URL’s mais amigáveis. Localizei inúmeros tutorias para remover a extensão .php de uma página PHP. E sobre o .html? Eu necessitava remover também! Neste post eu vou mostrar como fazer isso facilmente, editando o arquivo .htaccess.

O que é um arquivo .htaccess

Um arquivo .htaccess é um arquivo ASCII simples que você cria com um editor de texto como Notepad ou TextMate. Ele fornece uma maneira de fazer alterações de configuração em um diretório.

.htaccess não é a extensão do arquivo. Não é arquivo.htaccess, é simplesmente `.htaccess.

Arquivos .htaccess afetem o diretório no qual eles são colocados e todos os seus sub-diretórios. Por exemplo, se houver um arquivo .htaccess localizado no diretório raiz do seusite.com, isso afetaria seusite.com/paginas/, yoursite.com/paginas/images/, etc.

É importante lembrar que isso pode ser evitado - por exemplo, se você não quer que determinado comando de um .htaccess afetem um diretório específico -, simplesmente deve-se criar um novo arquivo .htaccess dentro do diretório que você não deseja que seja afetado, além é claro de remover o comando específico(s) no novo arquivo.

Características

Com um arquivo .htaccess, você pode:

  • Redirecionar o usuário para outra página
  • Proteger por senha um diretório específico
  • Bloquear usuários por IP
  • Prevenção de hot linking em suas imagens
  • Reescrever URIs
  • Especificar os seus próprios documentos de erros

Neste post vamos estar focando apenas em reescrever URIs

Removendo extensões

.php

Por exemplo no seguinte endereço seusite.com/pagina.php necessitamos remover a extensão .php ficando da seguinte forma seusite.com/wallpaper você deve adicionar o seguinte código no arquivo .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

.html

Por exemplo no seguinte endereço seusite.com/pagina.html necessitamos remover a extensão .html ficando da seguinte forma seusite.com/pagina você deve alterar a última linha do código acima para:

RewriteRule ^([^\.]+)$ $1.html [NC,L]

É isso!! Agora você pode vincular páginas dentro do documento HTML sem a necessidade de adicionar a extensão da página. Por exemplo:

<a href="http://seusite.com/pagina" title="página">página</a>

Conclusão

Para aqueles que não são experientes com arquivos .htaccess existe uma ferramenta online para criar arquivos .htaccess. Ela é muito boa para novatos e muito fácil de usar. Visite o site.

Observações

Atenção usuários GoDaddy: Para remover as extensões você precisa para permitir o comando MultiViews antes. O código deve ficar desta forma:

Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Se você está preocupado para que os buscadores não adiconem páginas duplicadas, adicione uma meta tag canônica no <head> do seu HTML:

<link rel="canonical" href="http://seusite.com/pagina/teste">
Top