将注释添加到.htaccess

为什么这个工作:

RewriteRule (.+)/$ $1 

这个工作:

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

但是这不起作用:

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

.htaccess中的注释必须在其自己的行上 ,而不是附加到其他语句。

最后的规则不起作用,因为评论不是真正的评论。 htaccess中的注释必须# 开始 (必须在行的开始处),而不是随意的。

在第二种情况下, #bla bla bla被解释为RewriteRule指令的第四个参数,它被简单地忽略。

在最后一种情况下, #bla bla bla被解释为第三个参数,在RewriteRule的情况下是标志去的地方, #bla bla bla不是mod_rewrite理解的标志,所以你得到一个错误。

Apache的configuration文件格式(其中.htaccess文件就是其中一个例子)在技术上不支持内联注释,只有全行注释(即以# 开头的行)。

以散列字符“#”开头的行被视为注释,并被忽略。 configuration指令后,注释可能不包含在一行中。 – 正式的Apache 2.4手册

令人困惑的是,每个模块都可以parsing其指令的input,但它喜欢 – 所以mod_rewrite决定如何处理以RewriteRule开头的行

我不知道,但我的猜测是, mod_rewrite忽略[flags]之后的所有内容,而#实际上并不是必须的。

但最好的办法就是始终保留自己的意见,因为无论你在评论什么指令,这都可以工作。