我想根据URL设置不同的HTTP标头。在我的特定情况下,我希望特定的网址(例如正则表达式^/abc$
)具有与其他网址不同的标头。
我正在尝试这个:
<IfModule mod_headers.c>
<If "%{REQUEST_URI} =~ /^\/abc$/">
Header set Content-Security-Policy: "default-src 'none'; style-src 'self' 'unsafe-inline';"
</If>
<Else>
Header set Content-Security-Policy: "default-src 'none'; child-src https: *.youtube.com 'self'; connect-src 'self'; font-src 'self'; img-src 'self'; script-src https: *.ytimg.com *.youtube.com 'self'; style-src 'self';"
</Else>
</IfModule>
然而,这似乎不起作用,日志说:
Cannot parse condition clause: Failed to compile regular expression
我做错了什么,我怎样才能让它发挥作用?
我还尝试了备用正则表达式m#^/abc$#
,然后没有错误,但If条件没有匹配。
答案 0 :(得分:5)
使用If
这样的条件来评估正则表达式:
<If "%{REQUEST_URI} =~ m#^/abc/?$#">
编辑:关于Apache 2.4+以下的作品:
<IfModule mod_headers.c>
<If "%{THE_REQUEST} =~ m#\s/+abc/?[?\s]#">
Header set Content-Security-Policy: "default-src 'none'; style-src 'self' 'unsafe-inline';"
</If>
<Else>
Header set Content-Security-Policy: "default-src 'none'; child-src https: *.youtube.com 'self'; connect-src 'self'; font-src 'self'; img-src 'self'; script-src https: *.ytimg.com *.youtube.com 'self'; style-src 'self';"
</Else>
</IfModule>
如果您使用较旧的Apache,请使用此mod_rewrite
技巧:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+abc/?[\s?] [NC]
RewriteRule ^ - [E=MYENV1:1]
RewriteCond %{THE_REQUEST} !\s/+abc/?[\s?] [NC]
RewriteRule ^ - [E=MYENV2:1]
Header set Content-Security-Policy "default-src 'none'; style-src 'self' 'unsafe-inline';" env=MYENV1
Header set Content-Security-Policy "default-src 'none'; child-src https: *.youtube.com 'self'; connect-src 'self'; font-src 'self'; img-src 'self'; script-src https: *.ytimg.com *.youtube.com 'self'; style-src 'self';" env=MYENV2
答案 1 :(得分:0)
这是从documentation中摘录的单行代码:
public bool DoesThisGetReset { get; set; }
答案 2 :(得分:-1)
我有一个类似的问题,但是我想使用解析的字符串创建一个新的标题
<IfModule mod_headers.c>
<If "%{THE_REQUEST} =~ /(.*)/.*">
Header set XKEY: "WP_$1"
</If>
</IfModule>
假设我去
monsite/abc.../def
我想添加标题
XKEY: WP_abc
我的测试
# Set XKEY Header
Header set XKEY: "WP_%{REQUEST_URI}e"
Header edit XKEY: /(.*)/(.*)$ $1
但是我还是把所有东西都弄明白了 XKEY:WP_corporate / particuliers-professionnels 而不是WP_corporate
另一种方法可能是使用另一个标头,在这种情况下,我有一个标头 x-url:/ abc / def 我尝试使用https://serverfault.com/questions/900481/how-to-add-a-header-using-another-headers-value-in-apache-http-server
RequestHeader set XKEY "WP_%{x-url}"
但仅适用于abc部分。