Когда оценивается RewriteRule, URL не экранируется, т. Е. Escape-последовательности %XX
, где X
- шестнадцатеричный символ, преобразуются в фактический символ.
B
гарантирует, что в переписанном URL-адресе обратные ссылки будут экранированы как тогда, когда они были первоначально экранированы, так и когда их не было. Это особенно важно в строках запросов, которые допускают меньше символов в своих данных, чем часть пути URL (кроме ?
).
В этой ошибке B
не удалось экранировать некоторые символы, т. Е. Он вел себя так, как будто флаг B
не был указан. Таким образом, несмотря на то, что флаг B
был ошибочным, это было не хуже, чем не использовать его.
Вы можете обойти это, передавая данные ваших сценариев через PATH_INFO вместо строк запроса, но это требует изменений в сценариях.