Por que isso funciona:
RewriteRule (.+)/$ $1
e este trabalho:
RewriteRule (.+)/$ $1 [L] #bla bla bla
mas isso não funciona:
RewriteRule (.+)/$ $1 #bla bla bla
A última regra não funciona porque os comentários não são realmente comentários. Os comentários em htaccess devem começar com um #
(deve estar no início de uma linha), e não arbitrariamente em qualquer lugar.
No segundo caso, o #bla bla bla
é interpretado como um 4º parâmetro da RewriteRule
diretiva, que é simplesmente ignorado.
No último caso, o #bla bla bla
é interpretado como um terceiro parâmetro, que no RewriteRule
caso de é para onde vão os sinalizadores, e #bla bla bla
não é nenhum sinalizador que o mod_rewrite entende, então você obtém um erro.
#
deva estar no "início" da linha, pode ser precedido por qualquer quantidade de espaço em branco. (Excesso) Espaços em branco em .htaccess são ignorados e podem ser "borrifados" em qualquer lugar, inclusive no início das linhas. Em outras palavras,#
deve ser o primeiro caractere sem espaço em branco em uma linha. Eu costumava erroneamente pensar que#
devia ser o personagem 1, na coluna da extrema esquerda!O formato de arquivo de configuração do Apache (dos quais
.htaccess
arquivos são um exemplo) não suporta tecnicamente comentários embutidos, apenas comentários de linha completa (ou seja, uma linha começando com a#
).No entanto, é confuso que cada módulo analise a entrada de suas diretivas da maneira que quiser - então
mod_rewrite
decide o que fazer com qualquer linha que comece comRewriteRule
Não sei ao certo, mas meu palpite é que isso
mod_rewrite
é ignorar tudo após o[flags]
, e o#
não é realmente necessário.A melhor aposta, porém, é sempre manter os comentários em suas próprias linhas, já que isso funcionará independentemente da diretriz que você está comentando.
fonte