拆分 .htaccess 文件中的长行

Max*_*rty 13 .htaccess apache-2.4

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

作为一个简单的例子,假设我正在设置一个标题

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

我可以(没有明显的破坏性问题)用类似的东西完成我的特定案例

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

但这会在字符串中插入逗号,所以我仍然很好奇是否有更好的答案可以普遍应用,而无需在响应中添加额外的字符。

理想的情况是,如果有一些连接字符可以用来将字符串分成更小的部分,例如

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

或者

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

或者

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

或者,如果我可以设置某种变量并转储它们的内容来执行类似的操作

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b
Run Code Online (Sandbox Code Playgroud)

这也将更易于管理。

nginx 出现了一个类似的主题,结论只是忍受冗长的行(他们正在处理一个很长的正则表达式,因此附加解决方案将不起作用);Apache 也会如此吗?

Bar*_*ard 15

以下应该工作:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"
Run Code Online (Sandbox Code Playgroud)

  • 我在 RewriteRule 中的冗长正则表达式模式中应用了反斜杠。我工作得很顺利,但必须删除下一行自动制表符空格(由 VS 代码生成)才能使其正常工作。 (2认同)

小智 6

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

重要规则:

  1. 一行中的空格很好,即。任意数量的制表符和空格;
  2. 除最后一行外,所有行的最后一个字符必须是反斜杠;<
  3. 最后一行不得以反斜杠结尾;
  4. Apache 注释字符 (#)不能用于注释掉一行。

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