Se você tem vários arquivos com o mesmo basename , então parece que você pode
ter um conflito com MultiViews
. Tente desabilitar isso no seu arquivo .htaccess
(ou configuração do servidor):
Options -MultiViews
MultiViews
(parte de mod_negotiation) faz o mesmo tipo de coisa que você está tentando fazer com o mod_rewrite e eu suspeito que esteja "ganhando". Quando você solicita /asdf
e asdf
mapas a um nome de arquivo, o MultiViews
tenta veicular um arquivo apropriado que corresponda ao tipo mime pretendido (o que pode explicar por que .js
arquivos foram perdidos).
My understanding of the rewrite ruleset is this: 1) if the file being requested doesn't exist THEN 2) if the filename does NOT contain a period, redirect the request to [filename].php
Caso contrário, sua compreensão das diretivas mod_rewrite está bem correta, exceto que a ordem é inversa (o padrão RewriteRule
é processado primeiro) ...
- Se o URL (o URL inteiro) não contiver um ponto.
- E a solicitação não é mapeada para um arquivo válido (é improvável que todos os seus arquivos tenham extensões de arquivo - portanto, talvez essa condição possa ser omitida).
- Reescreva internamente a solicitação adicionando uma extensão
.php
.
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Não há necessidade de escapar de um período literal em uma classe de caracteres, e a sinalização NC
é supérflua aqui.