Divida uma linha longa em um arquivo .htaccess

7

Eu estou definindo um cabeçalho Content-Security-Policy no meu arquivo .htaccess, e ele se tornou uma linha única extremamente longa, que é um incômodo de gerenciar. Existe alguma maneira de quebrar essa linha em substrings mais gerenciáveis?

Como um exemplo trivial, digamos que estou definindo um cabeçalho como

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

Eu posso (sem problemas óbvios de quebra) realizar o meu caso específico com algo como

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

mas isso irá inserir vírgulas na string, então eu ainda estava curioso para saber se havia uma resposta melhor que poderia ser aplicada em geral, sem adicionar os caracteres adicionais à resposta.

O ideal seria se houvesse algum caractere de concatenação que eu pudesse usar para dividir a string em partes menores, como

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

ou

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

ou

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

Como alternativa, se eu pudesse definir algum tipo de variável e simplesmente despejar o conteúdo deles para fazer algo como

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

isso também seria muito mais manejável.

Houve um tópico semelhante que surgiu para o nginx e a conclusão foi apenas para viver com as longas filas (eles estavam lidando com um longo regex, então a solução anexa não teria funcionado); Será esse o caso do Apache também?

    
por MaxPRafferty 27.01.2016 / 19:13

2 respostas

9

Os seguintes itens devem funcionar:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"
    
por 27.01.2016 / 19:41
4

Sim - a barra invertida funciona como uma linha de continuação . Isso está enterrado na documentação do Apache 2.4 no [ link

Regras importantes:

  1. O espaço em branco dentro de uma linha é bom, ou seja. qualquer número de guias e espaços;
  2. O último caractere em todas as linhas, exceto o final deve ser uma barra invertida;
  3. A linha final deve não terminar com uma barra invertida;
  4. O caractere de comentário do Apache (#) não pode ser usado para comentar uma linha.

Se essas regras não forem obedecidas, o servidor responderá com um erro 500.

    
por 10.03.2017 / 13:53