Назад | Перейти на главную страницу

Разбить длинную строку в файле .htaccess

Я устанавливаю заголовок Content-Security-Policy в моем файле .htaccess, и он превратился в чрезвычайно длинную одиночную строку, с которой трудно справиться. Есть ли способ разбить эту строку на более управляемые подстроки?

В качестве тривиального примера, скажем, я устанавливаю заголовок вроде

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"

Я могу (без очевидных проблем) выполнить свой конкретный случай с помощью чего-то вроде

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"

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

Было бы идеально, если бы был какой-то символ конкатенации, который я мог бы использовать для разбиения строки на более мелкие части, например

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"

или

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"

или

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"

В качестве альтернативы, если бы я мог установить какую-то переменную и просто выгрузить их содержимое, чтобы сделать что-то вроде

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b

это также было бы намного более управляемым.

Был аналогичная тема, которая возникла для nginx и вывод заключался в том, чтобы жить с длинными строками (они имели дело с длинным регулярным выражением, поэтому решение с добавлением не сработало бы); То же самое и с Apache?

Следующее должно работать:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"

Да - обратная косая черта работает как продолжение строки. Это похоронено в документации Apache 2.4 на [https://httpd.apache.org/docs/2.4/configuring.html#page-header]

Важные правила:

  1. Пробелы внутри строки допустимы, т.е. любое количество табуляции и пробелов;
  2. Последний символ во всех строках, кроме последней должен быть обратной косой чертой; <
  3. Последняя строка должна не заканчиваться обратной косой чертой;
  4. Символ комментария Apache (#) не может использоваться, чтобы закомментировать строку.

Если эти правила не соблюдаются, сервер ответит ошибкой 500.