なぜこれが機能するのですか?
RewriteRule (.+)/$ $1
そしてこの作品:
RewriteRule (.+)/$ $1 [L] #bla bla bla
しかし、これは機能しません:
RewriteRule (.+)/$ $1 #bla bla bla
なぜこれが機能するのですか?
RewriteRule (.+)/$ $1
そしてこの作品:
RewriteRule (.+)/$ $1 [L] #bla bla bla
しかし、これは機能しません:
RewriteRule (.+)/$ $1 #bla bla bla
回答:
コメントは実際にはコメントではないため、最後のルールは機能しません。htaccessファイル内のコメントを開始しなければならないと#
いない任意の任意の場所(行の先頭にある必要があります)、および。
2番目のケースでは、#bla bla bla
はRewriteRule
ディレクティブの4番目のパラメーターとして解釈され、単に無視されます。
最後のケースでは、#bla bla bla
は3番目のパラメーターとして解釈されます。これは、RewriteRule
の場合、フラグが移動する場所であり、#bla bla bla
mod_rewriteが理解できるフラグではないため、エラーが発生します。
#
ラインの「開始」でなければならない、それは空白の任意の量が先行することができます。(過剰).htaccessの空白は無視され、行の先頭を含む任意の場所に「振りかける」ことができます。つまり、#
行の最初の非空白文字でなければなりません。私は誤って#
、一番左の列の文字1である必要があると考えていました!
(うちApacheの設定ファイルのフォーマット.htaccess
ファイルは一例では)技術的にインラインコメントをサポートしていない、唯一のフルラインのコメント(つまり行から始まると#
)。
ハッシュ文字「#」で始まる行はコメントと見なされ、無視されます。構成ディレクティブの後の行にコメントを含めることはできません。- 公式Apache 2.4マニュアル
混乱を招きますが、各モジュールはディレクティブの入力を解析しますが、好きなように-でmod_rewrite
始まる行をどうするかを決定しますRewriteRule
確かなことはわかりませんが、私の推測では、のmod_rewrite
後のすべてを無視しているため[flags]
、#
実際には必要ありません。
しかし、最善の策は、コメントを常に独自の行に保持することです。これは、コメントしているディレクティブに関係なく機能するためです。