Sim, como você sugere, você precisa de uma condição adicional para testar se não é um diretório. Por exemplo, em .htaccess
:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/?$ $1.html [L]
O !-d
verifica se REQUEST_FILENAME
não mapeia para um diretório. A variável REQUEST_FILENAME
(em um diretório ou .htaccess
context) contém o caminho absoluto do sistema de arquivos do arquivo / diretório para o qual a solicitação é mapeada.
Eu não acho que você precise verificar arquivos , já que um arquivo não deve corresponder ao padrão RewriteRule
^([A-Za-z0-9-]+)/?$
- a menos que você tenha arquivos sem extensões de arquivo?
Nos documentos do Apache , você vincula:
RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-d
O formato desta diretiva não parece correto para mim, considerando que o exemplo mostra que está sendo usado em um contexto diretório . (Esse formato pode ser necessário em um contexto servidor ou virtualhost , quando REQUEST_FILENAME
é igual a REQUEST_URI
- o caminho da URL da solicitação. essa variável então começa com uma barra , então o que está acima ainda está incorreto ?!)