Adicionar comentários a .htaccess

88

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
user1032531
fonte

Respostas:

142

Os comentários em .htaccess devem estar em suas próprias linhas , não anexados a outras instruções.

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 RewriteRulediretiva, que é simplesmente ignorado.

No último caso, o #bla bla blaé interpretado como um terceiro parâmetro, que no RewriteRulecaso de é para onde vão os sinalizadores, e #bla bla blanão é nenhum sinalizador que o mod_rewrite entende, então você obtém um erro.

Jon Lin
fonte
7
Recomende editar a resposta para dizer algo como "# deve estar no início de uma linha". Apesar de tudo, obrigado!
user1032531
@ user1032531 Desculpe, é o que eu quis dizer
Jon Lin
Os comentários podem estar dentro de um <IfModule>?
Daniel Springer
Isso é algo que reaprendi muitas vezes. Isso pode levar horas. Obrigado.
Xonatron
1
Embora #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!
SherylHohman
29

O formato de arquivo de configuração do Apache (dos quais .htaccessarquivos 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 #).

As linhas que começam com o caractere hash "#" são consideradas comentários e são ignoradas. Os comentários não podem ser incluídos em uma linha após uma diretiva de configuração. - Manual oficial do Apache 2.4

No entanto, é confuso que cada módulo analise a entrada de suas diretivas da maneira que quiser - então mod_rewritedecide 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.

IMSoP
fonte