向 .htaccess 添加注释
Posted
技术标签:
【中文标题】向 .htaccess 添加注释【英文标题】:Adding comments to .htaccess 【发布时间】:2014-04-02 03:31:00 【问题描述】:为什么会这样:
RewriteRule (.+)/$ $1
这项工作:
RewriteRule (.+)/$ $1 [L] #bla bla bla
但这不起作用:
RewriteRule (.+)/$ $1 #bla bla bla
【问题讨论】:
【参考方案1】:.htaccess 中的注释必须单独一行,而不是附加到其他语句中。
最后一条规则不起作用,因为 cmets 并不是真正的 cmets。 htaccess 中的注释必须以#
开头(必须在行首),而不是任意位置。
在第二种情况下,#bla bla bla
被解释为RewriteRule
指令的第四个参数,它被简单地忽略了。
在最后一种情况下,#bla bla bla
被解释为第三个参数,在RewriteRule
的情况下是标志所在的位置,#bla bla bla
不是 mod_rewrite 理解的任何标志,所以你得到一个错误。
【讨论】:
建议编辑答案以说出“# 必须在行首”之类的内容。无论如何,谢谢! @user1032531 对不起,我就是这个意思 cmets 可以在#
必须位于行的“开始”,但它前面可以有任意数量的空格。 (多余的).htaccess 中的空格被忽略,并且可以“洒”在任何地方,包括行首。换句话说,#
必须是一行中的第一个非空白字符。我曾经错误地认为#
必须是字符 1,在最左边的列中!【参考方案2】:
Apache 的配置文件格式(其中.htaccess
文件是一个示例)在技术上不支持内联cmets,仅支持全行cmets(即以#
开头的一行)。
以哈希字符“#”开头的行被视为 cmets,并被忽略。配置指令后的一行不能包含注释。 -- Official Apache 2.4 manual
然而,令人困惑的是,每个模块都可以根据自己的喜好解析其指令的输入 - 所以mod_rewrite
决定如何处理以RewriteRule
开头的任何行
我不确定,但我猜mod_rewrite
会忽略[flags]
之后的所有内容,而#
实际上根本不需要。
不过,最好的办法是始终让 cmets 保持自己的路线,因为无论您评论的指令如何,这都会起作用。
【讨论】:
以上是关于向 .htaccess 添加注释的主要内容,如果未能解决你的问题,请参考以下文章