Подтвердить что ты не робот

Добавление комментариев в .htaccess

Почему это работает:

RewriteRule (.+)/$ $1

и эта работа:

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

но это не работает:

RewriteRule (.+)/$ $1 #bla bla bla
4b9b3361

Ответ 1

Комментарии в .htaccess должны быть в отдельной строке, а не добавляться к другим операторам.

Последнее правило не работает, потому что комментарии не являются комментариями. Комментарии в htaccess должны начинаться с # (должно быть в начале строки), а не произвольно в любом месте.

Во втором случае #bla bla bla интерпретируется как 4-й параметр директивы RewriteRule, который просто игнорируется.

В последнем случае #bla bla bla интерпретируется как 3-й параметр, который в случае RewriteRule находится там, где находятся флаги, а #bla bla bla не является флагов, которые mod_rewrite понимает, поэтому вы получаете сообщение об ошибке.

Ответ 2

Формат файла конфигурации Apache (из которых .htaccess - это один пример) не поддерживает техническую поддержку встроенных комментариев, а только полнострочные комментарии (т.е. строка, начинающаяся с #).

Линии, начинающиеся с символа хэша "#", считаются комментариями и игнорируются. Комментарии не могут быть включены в строку после директивы конфигурации. - Официальное руководство Apache 2.4

Смутно, однако, каждый модуль получает синтаксический анализ ввода для своих директив, но ему нравится - поэтому mod_rewrite решает, что делать с любой строкой, начинающейся с RewriteRule

Я не знаю точно, но я предполагаю, что mod_rewrite игнорирует все после [flags], а # вообще не требуется.

Лучше всего, однако, всегда держать комментарии в своей строке, так как это будет работать независимо от директивы, которую вы комментируете.