在.htaccess中添加评论


88

为什么这样做:

RewriteRule (.+)/$ $1

和这项工作:

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

但这不起作用:

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

Answers:


142

在.htaccess注释必须在他们自己的行,不附加其它语句。

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

在第二种情况下,将#bla bla bla解释为RewriteRule指令参数将被忽略。

在最后一种情况下,会#bla bla bla被解释为第3个参数,在RewriteRule的情况下,这是标志所在的位置,而#bla bla bla不是mod_rewrite可以理解的任何标志,因此会出现错误。


7
建议编辑答案说类似“#必须在一行的开头”之类的内容。无论如何,谢谢!
user1032531 2014年

@ user1032531对不起,这就是我要说的
乔恩·林

注释可以在<IfModule>内部吗?
丹尼尔·斯普林格

这是我多次学习的东西。浪费时间。谢谢。
Xonatron

1
虽然#必须在该行的“开始”位置,但可以在其前面加上任意数量的空格。(过多).htaccess中的空格将被忽略,并且可以“散布”到任何位置,包括行首。换句话说,#必须是一行上的第一个非空白字符。我#曾经错误地认为必须在最左侧一栏中输入字符1!
SherylHohman

29

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

以井号字符“#”开头的行被视为注释,并被忽略。配置指令后的行中可能不能包含注释。- 官方Apache 2.4手册

但是,令人困惑的是,每个模块都可以根据自己的喜好来解析其指令的输入-因此 mod_rewrite决定对以RewriteRule

我不确定,但是我的猜测mod_rewrite是忽略[flags],和之后的所有内容。#实际上根本没有必要。

不过,最好的选择是始终将注释保持在自己的行上,因为无论您要注释的指令如何,该注释都将起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.