Página sem extensão no Apache

Pessoal,

Uma ferramenta muito poderosa do Apache é o arquivo .htaccess, é através desse arquivo, geralmente localizado ou salvo no root do servidor (www), que podemos alterar funções e configurações do servidor.

Falaremos mais sobre isso, mas por enquanto, segue um exemplo onde iremos retirar a extensão do url sem afetar o index:

(caso não encontre o arquivo .htaccess , salve um arquivo texto com esse nome no root ou pasta onde deseja alterar as configurações)

#Diz ao apache para ele seguir os links indicados como rota
Options +FollowSymLinks

#Habilita o gerenciamento de url
RewriteEngine On

#Define a base do seu .htaccess, utilize / caso esteja no root ou /pasta caso esteja em alguma outra pasa, por exemplo: /artigos/novo
RewriteBase /

#Seta a condicional excluindo arquivos que não existam fisicamente no sistema de arquivos
RewriteCond %{SCRIPT_FILENAME} !-f

#Seta a condicional excluindo diretórios
RewriteCond %{SCRIPT_FILENAME} !-d

#Aqui está a mágica esta condição exclui o index, o problema está no
# gerenciador de index do apache, quando você digita www .seusite.com.br no
# browswer, o Apache redireciona a página para a primeira página de índice
# encontrada na pasta root e estas assim http:// www .seusite.com.br/index.htm e
# esconde o nome do arquivo, mostrando apenas http:// www .seusite.com.br/,
# você pode por explo alterar a configuração do gerenciador de index para
# procurar index sen extensão, mas nesse caso se alguém buscar o seu site como
# www .seusite.com.br/index.htm irá receber o erro 404 ou o apache entrará em
# loop infinito travando a navegação. Com essa solução, deixamos o Apache e
# seus visitante procurarem tanto index como index.htm

RewriteCond %{SCRIPT_FILENAME} !(index.php|index.htm|index.html)

#Redireciona seguindo as condições, todas as páginas sem extensão para .php
# e não mostra a extensão
RewriteRule ^([A-Za-z0-9_-]*)$ $1.php

#fim do arquivo

Muito bem, agora todos os seus links deverão apontar para "página" sem extensão, pois o Apache mantém a extensão caso seja solicitado no endereço.

Por enquanto é só.

Abraço,
Flavio Ribeiro