Почему это работает:
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, поэтому вы получаете ошибку.
#
должен находиться в «начале» строки, ему может предшествовать любое количество пробелов. (Превышение) Пробелы в .htaccess игнорируются и могут быть «разбросаны» где угодно, в том числе в начале строк. Другими словами, он#
должен быть первым непробельным символом в строке. Я ошибочно думал#
, что в крайнем левом столбце должен стоять символ 1!Формат файла конфигурации Apache (
.htaccess
одним из примеров которого являются файлы) технически не поддерживает встроенные комментарии, а только полнострочные комментарии (т. Е. Строку, начинающуюся с символа a#
).Тем не менее, что сбивает с толку, каждый модуль может анализировать ввод для своих директив, как ему нравится - поэтому
mod_rewrite
решает, что делать с любой строкой, начинающейся сRewriteRule
Я не знаю наверняка, но предполагаю, что
mod_rewrite
игнорируется все, что находится после[flags]
, и на#
самом деле это вообще не нужно.Однако лучше всего всегда оставлять комментарии в своей строке, поскольку это будет работать независимо от директивы, которую вы комментируете.
источник