【问题标题】:Concatenate two strings in apache config在 apache 配置中连接两个字符串
【发布时间】:2018-07-27 10:58:40
【问题描述】:

在 apache 配置文件中如何连接两个字符串?

例如:

"hello" + "world"
// "helloworld"

为什么?

有人可能希望这样做来处理大标题,例如下面的Content-Security-Policy 是我的 CSP 的一个示例。您可以看到它的格式很好,便于维护,但是在标头中发送时它有不需要的空格。

Header set Content-Security-Policy "\
;default-src\
    'self'\
;child-src\
    'self'\
;connect-src\
    'self'\
;font-src\
    'self'\
    https://*.gstatic.com\
;form-action\
    'self';\
;frame-ancestors\
    'self'\
;frame-src\
    'self'\
;img-src\
    'self'\
    https://www.google.com/s2/favicons\
    https://www.google-analytics.com\
    https://*.gstatic.com\
    https://*.googleapis.com\
;object-src\
    'none'\
;script-src\
    'self'\
    'unsafe-eval'\
    https://www.google-analytics.com\
    https://*.googleapis.com\
;style-src\
    'self'\
    'unsafe-inline'\
    https://*.googleapis.com\
;\
"

【问题讨论】:

  • 您的意思是针对特定指令吗?
  • @madebydavid 更多的是一个语法问题,但我的情况是我设置了一个非常大的标题(CSP)
  • 感谢语法 ;-) 以 ; 为前缀和额外的换行符 +1

标签: string apache string-concatenation


【解决方案1】:

我认为你可以这样声明变量:https://stackoverflow.com/a/15731921/6663198
然后,您可以轻松地连接变量

【讨论】:

  • 感谢您的回答,但它并没有真正直接连接字符串。我已经更新了我的问题以提供一些背景信息。
【解决方案2】:
OIDCScope "profile email openid offline_access"
OIDCRemoteUserClaim  sub

<Location "/app2">
    AuthType openid-connect
    Require valid-user
    ProxyPass   "http://192.168.10.237/myapp"
    ProxyPassReverse  "http://192.168.10.237/myapp"

    RewriteEngine On
    RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}] 
    RequestHeader set REMOTE_USER  %{PROXY_USER}e
</Location>

</VirtualHost>

【讨论】:

  • 感谢并欢迎来到 SO,您能否详细说明这是如何回答问题的?
【解决方案3】:

我最好的猜测是使用setenvdefine 指令来声明和定义值,然后使用${VAR} 语法简单地引用它,如here 所述。

原则上,以下应该可以工作。

$httpd -DTestCaseOne

...

<IfDefine TestCaseOne>
  Define dir_name_one media
  Define dir_name_two images
</IfDefine>

...

Include "/etc/httpd/sites/${dir_name_one}-${dir_name_two}/env.conf"

以上参考的服务器版本是 - Apache 2.4

【讨论】:

    【解决方案4】:

    你可以这样试试:

    set $text = 'text';  
    set $additional "${text}additional";
    

    【讨论】:

    • 感谢您的回答,但它并没有真正直接连接字符串。我已经更新了我的问题以提供一些背景信息。
    【解决方案5】:

    到目前为止,我管理的最好的方法是发布edit* Header

    注意\换行符之前的多余空格

    Header set Content-Security-Policy "\
    ;default-src \
        'self' \
    ;child-src \
        'self' \
    ;connect-src \
        'self' \
    "
    
    # Remove unwanted whitespaces
    Header edit* Content-Security-Policy "\s\s\s\s" ""
    

    不是 100% 好,有点贵,可能会适得其反,但这是一种方法

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2021-04-12
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多