Estou tendo algumas URLs (vinculadas de fora) que não possuem extensão, por exemplo
www.example.com/main
Originalmente havia arquivos main.htm
e main.html
na raiz do servidor.
No entanto, um
RewriteRule ^main$ main.html [L,R=301]
não funciona.
Não há pasta main/
nem arquivo nomeado main
na raiz do servidor.
Existem outras entradas no .htaccess
arquivo que funcionam, então tenho certeza que o RewriteMod está ativo e funcionando. Também tenho regras de reescrita para erros de digitação (um link para www.example.com/xyz)
isso pode ser redirecionado.
RewriteRule ^xyz\)$ xyz/index.html [L,R=301]
O interessante é que a www.example.com/main
URL aparece inalterada no navegador (a URL na barra do navegador não muda (como acontece com um redirecionamento)) mas a página aparece com o conteúdo do arquivo main.de.html
. Se eu criar um arquivo chamado main.da.html
, ele aparecerá com esse conteúdo (mas somente após a reinicialização do apache).
Não consigo descobrir como ele chega lá ou como redirecioná-lo para main.html
.
Desative MutliViews na parte superior do seu
.htaccess
arquivo:MultiViews (parte do mod_negotiation) normalmente procurará arquivos físicos que correspondam
main
(neste caso) a um nome de base (e responderiam com um tipo mime apropriado). Isso acontece antes do mod_rewrite. Portanto, se você tiver um arquivo chamadomain.de.html
, isso será servido como uma subsolicitação interna (sem redirecionamento) antes que o mod_rewrite tenha a chance de processar.Isso não é algo que normalmente exigiria uma reinicialização do Apache. Embora seja possível que haja algum cache acontecendo. (?)
À parte: é improvável que isso seja válido como um redirecionamento externo, a menos que você tenha uma
RewriteBase
diretiva existente (suponho que você deva ter)? Caso contrário, você deve prefixar a substituição com uma barra. ou seja/main.html
(se o arquivo estiver na raiz do documento).Se MulitViews não for o problema, pode ser que a diretiva esteja no lugar errado no arquivo de configuração e outras diretivas talvez estejam em conflito. Precisamos ver seu
.htaccess
arquivo.