Agregar comentarios a .htaccess

89

Por qué funciona esto:

RewriteRule (.+)/$ $1

y este trabajo:

RewriteRule (.+)/$ $1 [L] #bla bla bla

pero esto no funciona:

RewriteRule (.+)/$ $1 #bla bla bla
usuario1032531
fuente

Respuestas:

143

Los comentarios en .htaccess deben estar en su propia línea , no anexados a otras declaraciones.

La última regla no funciona porque los comentarios no son realmente comentarios. Los comentarios en htaccess deben comenzar con #(debe estar al comienzo de una línea) y no arbitrariamente en cualquier lugar.

En el segundo caso, #bla bla blase interpreta como un cuarto parámetro de la RewriteRuledirectiva, que simplemente se ignora.

En el último caso, el #bla bla blase interpreta como un tercer parámetro, que en el RewriteRulecaso del es donde van las banderas, y #bla bla blano es ninguna bandera que mod_rewrite entienda, por lo que se obtiene un error.

Jon Lin
fuente
7
Recomiende editar la respuesta para decir algo como "# debe estar al principio de una línea". Independientemente, ¡gracias!
usuario1032531
@ user1032531 Lo siento, eso es lo que quise decir
Jon Lin
¿Pueden los comentarios estar dentro de un <IfModule>?
Daniel Springer
Esto es algo que he vuelto a aprender muchas veces. Puede perder horas. Gracias.
Xonatron
1
Aunque #debe estar al "inicio" de la línea, puede ir precedido por cualquier cantidad de espacios en blanco. (Exceso) Los espacios en blanco en .htaccess se ignoran y se pueden "esparcir" en cualquier lugar, incluso al principio de las líneas. En otras palabras, #debe ser el primer carácter que no sea un espacio en blanco en una línea. ¡Solía ​​pensar erróneamente que #tenía que ser el carácter 1, en la columna más a la izquierda!
SherylHohman
29

El formato de archivo de configuración de Apache (del cual los .htaccessarchivos son un ejemplo) no admite técnicamente comentarios en línea, solo comentarios de línea completa (es decir, una línea que comienza con a #).

Las líneas que comienzan con el carácter de almohadilla "#" se consideran comentarios y se ignoran. Es posible que los comentarios no se incluyan en una línea después de una directiva de configuración. - Manual oficial de Apache 2.4

Sin embargo, de manera confusa, cada módulo puede analizar la entrada para sus directivas como quiera, así que mod_rewritedecide qué hacer con cualquier línea que comience conRewriteRule

No lo sé con certeza, pero supongo que se mod_rewriteestá ignorando todo después del [flags], y #no es realmente necesario en absoluto.

Sin embargo, lo mejor es mantener siempre los comentarios en su propia línea, ya que eso funcionará independientemente de la directiva que esté comentando.

IMSoP
fuente