拆分 .htaccess 文件中的长行

拆分 .htaccess 文件中的长行

我在 .htaccess 文件中设置了 Content-Security-Policy 标头,但它已经变成了一行非常长的文字,管理起来很麻烦。有没有办法把这一行拆分成更易于管理的子字符串?

举一个简单的例子,假设我正在设置一个像这样的标题

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 也会这样吗?

答案1

以下应该有效:

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

答案2

是的 - 反斜杠的作用是行延续。这隐藏在 Apache 2.4 文档中 https://httpd.apache.org/docs/2.4/configuring.html#page-header

重要规则:

  1. 行内的空白是可以的,即任意数量的制表符和空格;
  2. 除最后一行外所有行的最后一个字符必须是反斜杠;<
  3. 最后一行必须不是以反斜杠终止;
  4. Apache 注释字符 (#)不能用于注释掉某一行。
  5. 你不能破坏[旗帜]

如果不遵守这些规则,服务器将响应错误 500。

请注意,在编辑*.conf文件时您可以使用它C:\Apache24\bin>httpd -t来检查语法。

相关内容