Por qué funciona esto:
RewriteRule (.+)/$ $1
y este trabajo:
RewriteRule (.+)/$ $1 [L] #bla bla bla
pero esto no funciona:
RewriteRule (.+)/$ $1 #bla bla bla
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 bla
se interpreta como un cuarto parámetro de la RewriteRule
directiva, que simplemente se ignora.
En el último caso, el #bla bla bla
se interpreta como un tercer parámetro, que en el RewriteRule
caso del es donde van las banderas, y #bla bla bla
no es ninguna bandera que mod_rewrite entienda, por lo que se obtiene un error.
#
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!El formato de archivo de configuración de Apache (del cual los
.htaccess
archivos 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#
).Sin embargo, de manera confusa, cada módulo puede analizar la entrada para sus directivas como quiera, así que
mod_rewrite
decide qué hacer con cualquier línea que comience conRewriteRule
No lo sé con certeza, pero supongo que se
mod_rewrite
está 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.
fuente