Warum funktioniert das:
RewriteRule (.+)/$ $1
und diese Arbeit:
RewriteRule (.+)/$ $1 [L] #bla bla bla
aber das funktioniert nicht:
RewriteRule (.+)/$ $1 #bla bla bla
Die letzte Regel funktioniert nicht, da die Kommentare keine wirklichen Kommentare sind. Kommentare in htaccess müssen mit a beginnen#
(müssen am Anfang einer Zeile stehen) und dürfen nicht willkürlich irgendwo sein.
Im zweiten Fall wird das #bla bla bla
als 4. Parameter der RewriteRule
Direktive interpretiert , der einfach ignoriert wird.
Im letzten Fall wird das #bla bla bla
als dritter Parameter interpretiert. In diesem RewriteRule
Fall befinden sich die Flags dort und es #bla bla bla
gibt keine Flags, die mod_rewrite versteht, sodass Sie einen Fehler erhalten.
#
muss sich zwar am "Anfang" der Zeile befinden, es kann jedoch eine beliebige Anzahl von Leerzeichen vorangestellt werden. (Überschüssiges) Leerzeichen in .htaccess wird ignoriert und kann überall "gestreut" werden, auch am Zeilenanfang. Mit anderen Worten,#
muss das erste Nicht-Leerzeichen in einer Zeile sein. Früher dachte ich fälschlicherweise#
, es müsse Zeichen 1 in der Spalte ganz links sein!Das Konfigurationsdateiformat von Apache (von dem
.htaccess
Dateien ein Beispiel sind) unterstützt technisch keine Inline-Kommentare, sondern nur vollständige Kommentare (dh eine Zeile, die mit a beginnt#
).Verwirrenderweise kann jedes Modul die Eingabe nach Belieben für seine Anweisungen analysieren -
mod_rewrite
entscheidet also , was mit einer Zeile zu tun ist, die mit beginntRewriteRule
Ich weiß es nicht genau, aber ich vermute, dass
mod_rewrite
alles nach dem ignoriert[flags]
wird und das#
eigentlich gar nicht notwendig ist.Am besten ist es jedoch, die Kommentare immer in ihrer eigenen Zeile zu belassen, da dies unabhängig von der Anweisung funktioniert, die Sie kommentieren.
quelle