为什么这样做:
RewriteRule (.+)/$ $1
这项工作:
RewriteRule (.+)/$ $1 [L] #bla bla bla
但这不起作用:
RewriteRule (.+)/$ $1 #bla bla bla
答案 0 :(得分:135)
最后一条规则不起作用,因为评论不是真正的评论。 htaccess 中的注释必须以#
开头(必须在一行的开头),而不是随意的任何地方。
在第二种情况下,#bla bla bla
被解释为RewriteRule
指令的第4个参数,它被忽略。
在最后一种情况下,#bla bla bla
被解释为第三个参数,在RewriteRule
的情况下是标志所在的位置,#bla bla bla
不是任何标志mod_rewrite理解,所以你得到一个错误。
答案 1 :(得分:28)
Apache的配置文件格式(其中.htaccess
个文件就是一个例子)在技术上不支持内联注释,只支持全行注释(即行开头,带{{1 }})。
以井号“#”开头的行被视为注释,并被忽略。配置指令后,注释可能不包含在一行中。 - Official Apache 2.4 manual
令人困惑的是,每个模块都会解析其指令的输入,但它喜欢 - 所以#
决定如何处理以mod_rewrite
开头的任何行
我不确定,但我的猜测RewriteRule
忽略了mod_rewrite
之后的所有内容,[flags]
实际上根本不需要。
但最好的办法是始终保持对自己的评论,因为无论您评论的指令是什么,都可以。