【发布时间】:2017-12-17 18:13:34
【问题描述】:
我一直在尝试用很少的 RewriteCond 有条件地设置标题。似乎不太好用。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9
RewriteCond %{HTTP_REFERER} "/id\:no\:"
RewriteCond %{REQUEST_URI} "/live-stream/"
RewriteRule ^.*$ - [ENV=stream:true]
Header unset X-Frame-Options env=stream
Header set Content-Security-Policy "frame-ancestors ‘self’ *.google.com:443 *.mydomain.com:443 mydomain2.com:443;” env=stream
</IfModule>
两个条件都匹配,但在 curl 时重写规则似乎没有显示结果。它采用为其他 uri 设置的通用设置。
更新1: 我已经让未设置的字符串头工作了。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9
RewriteCond %{HTTP_REFERER} "/id\:no\:"
RewriteCond %{REQUEST_URI} "/live-stream/"
RewriteRule ^ - [ENV=stream1:true]
RewriteCond %{HTTP_REFERER} "/id\:no\:"
RewriteCond %{REQUEST_URI} "/live-stream/"
RewriteRule ^ - [ENV=stream2:true]
Header set Content-Security-Policy "frame-ancestors ‘self’ *.google.com:443 *.mydomain.com:443 mydomain2.com:443;” env=stream2
</IfModule>
我已经设法通过在重写规则中使用 Env 变量来取消设置标题,并在它设置它的级别否定。
现在唯一不起作用的是 Content-Security-Policy 更改。
这是我得到的输出: $ curl -H '推荐人:https://www.example.net/buy/id:no:1234567' 'www.example.net/applications/buy/live-stream/list/en-us/index.html' -sS -o /dev/null -D -
HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 00:31:14 GMT
Content-Security-Policy: frame-ancestors 'self' *.google.com:443 *.mydomain.com:443 mydomain2.com:443;” env=stream2
【问题讨论】:
-
您并没有真正在实际代码中使用 curly 单引号和双引号,对吧?
-
我的使用方式与问题相同。
-
在此处需要更多详细信息。
HTTP_REFERER条件的目的是什么?点击/live-streamURI时浏览器显示的URL是什么,之后在浏览器URL中显示的是什么? -
HTTP_REFERER的示例为 www.mydomain.com/buy/id:no:1234567,REQUEST_URI的示例为 www.mydomain.com /applications/buy/live-stream/list/en-us/index.html -
这个 .htaccess 在哪里?那里有更多规则吗?
标签: php apache .htaccess mod-rewrite webserver