Resolvi refazer as regras para o .htaccess ignorar extensões, anteriormente citado neste meu post. Agora o código ficou bem mais “enxuto”.
No código abaixo, existe somente uma regra, se o arquivo terminar em .php, diga que não existe. E existe uma opção chamada MultiViews.
A opção Multiviews diz, se não encontrar o arquivo abc (sem extensão), procure qualquer arquivo abc, com qualquer extensão, exemplo abc.php. E é assim que funciona.
RewriteEngine On
Options +FollowSymLinks +MultiViews
RewriteCond %{THE_REQUEST} \.php\sHTTP\/1\.[01] [QSA, NC]
RewriteRule .* - [L, R=404]
O código foi testado usando Apache 2, mas deve funcionar no Apache 1.3 também.
Lembre-se de testar, se o mod_rewrite esta funcionando corretamente, aqui no Ubuntu (8.04) eu tive que configurar o mod_rewrite “na mão” pra funcionar. Caso seja o seu caso, você pode seguir os passos descritos nesse post, que foi o que eu usei.
Atualizado em 08/09/2009
Adicionada a flag L (last) no RewriteRule, indicando que a regra deve ser considerada a última.
[...] Este post ganhou uma nova versão, com um código melhorado, confira aqui. [...]
Apache 1.3 não tem MultiViews, eu acho.
Ah, funciona sim, acabei de ver :) auto-reply :D
Opa! No fim acabei indo verificar também.
boa mano.
:D
abraços
Da para fazer isso em um servidor Windows? ele tambem roda PHP mais não sei se esse tal de .HTACCESS vai pegar.
Se estiver rodando Apache é para funcionar sim. Independe da plataforma.
Abraços.
Caio, para páginas .html o código fica como o abaixo?
RewriteEngine On
Options +FollowSymLinks +MultiViews
RewriteCond %{THE_REQUEST} \.html\sHTTP\/1\.[01] [nc]
RewriteRule .* – [R=404]
Abraços.
Miranda,
Exato.
Então Caio, não deu certo.
Eu peguei a versão 1 do código e coloquei la, ai deu certo.
Você tem algum script para validação de campos de formulário? Não consegui implementar o .js que encontrei na net. =/
Abraço.
Caio, eu vou acessar a url, com .php e sem .php da erro, o que eu faço? :S
@Junior
Qual o código do erro?
Aparece a página do erro 404, mais eu já descobri o erro, uma única letra causa o transtorno ç.ç’
O código correto seria esse:
RewriteEngine On
Options +FollowSymLinks +MultiViews
RewriteCond %{THE_REQUEST} \.php\sHTTP\/1\.[01] [nc]
RewriteRule .* – [L,R=404]
Como posso tratar parâmetros?
Ficaria assim?
http:meusite.com/topicos/2010/03/01
Você trata os parâmetros normalmente.
Por exemplo, no caso de topicos.php, seria:
http://meusite.com/topicos?parametro=...