Hinzufügen von Kommentaren zu .htaccess

88

Warum funktioniert das:

RewriteRule (.+)/$ $1

und diese Arbeit:

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

aber das funktioniert nicht:

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

Antworten:

142

Kommentare in .htaccess müssen in einer eigenen Zeile stehen und dürfen nicht an andere Anweisungen angehängt werden.

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 blaals 4. Parameter der RewriteRuleDirektive interpretiert , der einfach ignoriert wird.

Im letzten Fall wird das #bla bla blaals dritter Parameter interpretiert. In diesem RewriteRuleFall befinden sich die Flags dort und es #bla bla blagibt keine Flags, die mod_rewrite versteht, sodass Sie einen Fehler erhalten.

Jon Lin
quelle
7
Empfehlen Sie die Antwort zum Bearbeiten, um etwas wie "# muss am Anfang einer Zeile stehen" zu sagen. Trotzdem danke!
user1032531
@ user1032531 Entschuldigung, das wollte ich sagen
Jon Lin
Können sich Kommentare in einem <IfModule> befinden?
Daniel Springer
Das habe ich schon oft neu gelernt. Es kann Stunden verschwenden. Danke dir.
Xonatron
1
Es #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!
SherylHohman
29

Das Konfigurationsdateiformat von Apache (von dem .htaccessDateien ein Beispiel sind) unterstützt technisch keine Inline-Kommentare, sondern nur vollständige Kommentare (dh eine Zeile, die mit a beginnt# ).

Zeilen, die mit dem Hash-Zeichen "#" beginnen, gelten als Kommentare und werden ignoriert. Kommentare dürfen nach einer Konfigurationsanweisung nicht in eine Zeile eingefügt werden. - Offizielles Apache 2.4 Handbuch

Verwirrenderweise kann jedes Modul die Eingabe nach Belieben für seine Anweisungen analysieren - mod_rewriteentscheidet also , was mit einer Zeile zu tun ist, die mit beginntRewriteRule

Ich weiß es nicht genau, aber ich vermute, dass mod_rewritealles 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.

IMSoP
quelle