Problemas com mod_rewrite e extensões PHP - Ajudar a fazer o arquivo correto .htaccess

2

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

    
por nicorellius 29.10.2012 / 20:32

1 resposta

2

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

    
por 29.10.2012 / 23:54