Почему это работает:
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 должны начинаться с #
(должно быть в начале строки), а не произвольно в любом месте.
Во втором случае #bla bla bla
интерпретируется как 4-й параметр директивы RewriteRule
, который просто игнорируется.
В последнем случае #bla bla bla
интерпретируется как 3-й параметр, который в случае RewriteRule
находится там, где находятся флаги, а #bla bla bla
не является флагов, которые mod_rewrite понимает, поэтому вы получаете сообщение об ошибке.
Формат файла конфигурации Apache (из которых .htaccess
- это один пример) не поддерживает техническую поддержку встроенных комментариев, а только полнострочные комментарии (т.е. строка, начинающаяся с #
).
Линии, начинающиеся с символа хэша "#", считаются комментариями и игнорируются. Комментарии не могут быть включены в строку после директивы конфигурации. - Официальное руководство Apache 2.4
Смутно, однако, каждый модуль получает синтаксический анализ ввода для своих директив, но ему нравится - поэтому mod_rewrite
решает, что делать с любой строкой, начинающейся с RewriteRule
Я не знаю точно, но я предполагаю, что mod_rewrite
игнорирует все после [flags]
, а #
вообще не требуется.
Лучше всего, однако, всегда держать комментарии в своей строке, так как это будет работать независимо от директивы, которую вы комментируете.