添加评论到.htaccess

use*_*531 86 apache .htaccess comments

为什么这样做:

RewriteRule (.+)/$ $1
Run Code Online (Sandbox Code Playgroud)

这项工作:

RewriteRule (.+)/$ $1 [L] #bla bla bla
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

RewriteRule (.+)/$ $1 #bla bla bla
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 137

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

最后一条规则不起作用,因为评论不是真正的评论.htaccess中的注释必须以a 开头#(必须在一行的开头),而不是随意的任何地方.

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

在最后一种情况下,它#bla bla bla被解释为第三个参数,在这种RewriteRule情况下是标志所在的位置,并且#bla bla bla不是mod_rewrite理解的任何标志,因此您会收到错误.

  • 建议编辑答案,说出"#必须在一行的开头".无论如何,谢谢! (6认同)
  • 虽然“#”必须位于行的“开头”,但其前面可以有任意数量的空格。.htaccess 中的(多余)空白将被忽略,并且可以“散布”在任何地方,包括行首。换句话说,“#”必须是一行中的第一个非空白字符。我曾经错误地认为“#”必须是字符 1,位于最左边的列中! (2认同)

IMS*_*SoP 28

Apache的配置文件格式(其中.htaccess文件就是一个例子),在技术上不支持嵌入式的意见,只完整行的注释(即一行开始#).

以井号"#"开头的行被视为注释,并被忽略.配置指令后,注释可能不包含在一行中.- 官方Apache 2.4手册

但是,令人困惑的是,每个模块都会解析其指令的输入,但它喜欢 - 因此mod_rewrite决定如何处理以任何行开头RewriteRule

我不确定,但我的猜测是mod_rewrite忽略了之后的所有事情[flags],#实际上并不是必需的.

但最好的办法是始终保持对自己的评论,因为无论您评论的指令是什么,都可以.