Dlaczego to działa:
RewriteRule (.+)/$ $1
i ta praca:
RewriteRule (.+)/$ $1 [L] #bla bla bla
ale to nie działa:
RewriteRule (.+)/$ $1 #bla bla bla
Dlaczego to działa:
RewriteRule (.+)/$ $1
i ta praca:
RewriteRule (.+)/$ $1 [L] #bla bla bla
ale to nie działa:
RewriteRule (.+)/$ $1 #bla bla bla
Odpowiedzi:
Ostatnia zasada nie działa, ponieważ komentarze tak naprawdę nie są komentarzami. Komentarze w htaccess muszą zaczynać się od #
(muszą znajdować się na początku wiersza), a nie w dowolnym miejscu.
W drugim przypadku #bla bla bla
jest on interpretowany jako czwarty parametr RewriteRule
dyrektywy, który jest po prostu ignorowany.
W ostatnim przypadku, #bla bla bla
jest on interpretowany jako trzeci parametr, który w tym RewriteRule
przypadku jest miejscem, do którego trafiają flagi, i #bla bla bla
nie ma żadnych flag, które mod_rewrite rozumie, więc pojawia się błąd.
#
musi znajdować się na „początku” wiersza, może być poprzedzony dowolną ilością białych znaków. (Nadmiar) Białe znaki w .htaccess są ignorowane i można je „posypać” w dowolnym miejscu, w tym na początku wierszy. Innymi słowy, #
musi być pierwszym niebiałym znakiem w wierszu. Błędnie myślałem, że #
musi to być znak 1, w lewej kolumnie!
Format pliku konfiguracyjnego Apache ( .htaccess
jednym z przykładów są pliki) nie obsługuje technicznie komentarzy w wierszu, a jedynie komentarze pełnowierszowe (tj. Wiersz zaczynający się od a #
).
Wiersze zaczynające się od znaku krzyżyka „#” są uważane za komentarze i są ignorowane. Komentarze nie mogą być umieszczane w wierszu po dyrektywie konfiguracyjnej. - Oficjalna instrukcja Apache 2.4
Mylące jest jednak to, że każdy moduł analizuje dane wejściowe pod kątem swoich dyrektyw, jak chce - więc mod_rewrite
decyduje, co zrobić z każdą linią zaczynającą się odRewriteRule
Nie wiem na pewno, ale przypuszczam, że mod_rewrite
ignoruje wszystko po znaku [flags]
, a #
to nie jest wcale konieczne.
Najlepiej jednak jest zawsze zachować komentarze do własnej linii, ponieważ będzie to działać niezależnie od komentowanej dyrektywy.