Você pode fazer isso usando o .htaccess. O código correto para conseguir isso é o seguinte:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
Estou à procura de um conjunto de regras simples e redirecionamentos para o meu site. Eu tentei tantas combinações que estou começando a ficar confuso.
Não sei como configurar isso. Geralmente, sem mod-rewrite, eu usaria caminhos relativos para vincular a arquivos:
<a href="link.php">Link</a>
se estiver no mesmo diretório.
Agora eu gostaria de usar isso:
<a href="link">Link</a>
E se você for a esta página:
localhost/mysite/link
irá levá-lo ao local correto, que seria:
localhost/mysite/link.php
Mas também, em muitos níveis de diretórios eu gostaria que ele funcionasse bem:
localhost/mysite/group/link2
iria para:
localhost/mysite/group/link2.php
e:
localhost/mysite/group/section/link3
iria para:
localhost/mysite/group/section/link3.php
Mas, em todos esses casos, se alguém digitar isso:
localhost/mysite/group/section/link3.php
na barra de URL, mostraria isso:
localhost/mysite/group/section/link3
Obrigado
EDITAR
Acho que parte do problema que eu estava tendo era que eu tinha esses diretórios na raiz do meu site:
product1
, product2
, product3
e eu também tinha esses arquivos em um diretório chamado products
:
product1.php
, product2.php
, product3.php
O arquivo .htaccess
não estava funcionando até que eu alterei esses nomes de arquivos para outra coisa, que não era o mesmo que os nomes dos diretórios. Isso faz sentido? Esse comportamento é esperado?
EDIT 2
Tenho certeza de que alguém virá a este post procurando ajuda semelhante, como eu fiz quando escrevi esta pergunta. Há muitas boas respostas no mod_rewrite aqui e no stackoverflow.com. Eu recomendo ler essas e testar essas condições e regras em uma instância de teste para pegar o jeito delas.
Percebi também que o uso de cache de navegador freqüente limpa e a ativação do RewriteLog é essencial para descobrir essas coisas. Por exemplo:
RewriteLog "rewrite.log" RewriteLogLevel 7
Divirta-se
Tags redirect php xampp mod-rewrite