Почему это работает:
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]
, и на #
самом деле это вообще не нужно.
Однако лучше всего всегда оставлять комментарии в своей строке, поскольку это будет работать независимо от директивы, которую вы комментируете.