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