Php 使用重写规则[apachehttpd.conf]有条件地设置多个头

Php 使用重写规则[apachehttpd.conf]有条件地设置多个头,php,apache,.htaccess,mod-rewrite,webserver,Php,Apache,.htaccess,Mod Rewrite,Webserver,我一直在尝试用很少的重写时间有条件地设置标题。似乎不太管用 <IfModule mod_rewrite.c> RewriteEngine on RewriteLog "/tmp/rewrite.log" RewriteLogLevel 9 RewriteCond %{HTTP_REFERER} "/id\:no\:" RewriteCond %{REQUEST_URI} "/live-stream/" RewriteRule ^.*$ - [ENV=str

我一直在尝试用很少的重写时间有条件地设置标题。似乎不太管用

<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> 

请尝试以下代码,因为这对我有用:

RewriteCond %{HTTP_REFERER} "/id:no:" [NC]
RewriteCond %{REQUEST_URI} "/live-stream/" [NC]
RewriteRule ^ - [E=stream1:1,E=stream2:1]

Header set Content-Security-Policy "frame-ancestors ‘self’ *.google.com:443 *.mydomain.com:443 mydomain2.com:443;" env=stream2
确保在运行
curl
命令时没有得到任何404

尝试使用此
curl
命令:

curl -IkL -H 'Referer: http://localhost/buy/id:no:1234567' 'localhost/applications/buy/live-stream/list/en-us/index.html'

我已经设法把这些变化按时间安排好了

<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]
</IfModule>

您在实际代码中并没有真正使用卷曲单引号和双引号,对吗?我使用的方法与问题中的方法相同。这里需要更多详细信息。
HTTP\u REFERER
条件的目的是什么?单击
/live stream
URI时浏览器中显示的URL是什么?单击
HTTP\u REFERER
的示例为www.mydomain.com/buy/id:no:1234567,
请求的URL
的示例为www.mydomain.com/applications/buy/live-stream/list/en-us/index.htmlweb该.htaccess位于何处?还有更多的规则吗?谢谢,我也是这么做的。因为已经有一个包含内容安全策略的头,所以我必须否定它,并设置要使用的另一个头。请检查我发布的解决方案。Apache版本是2.2为什么为相同的条件设置stream1和stream2变量?我已经添加了这两个条件,因为我有两个标题。您可以在相同的
重写规则中设置两个env变量。anubhava如何将这两个env变量添加到相同的
重写规则中?您可以执行以下操作:
RewriteRule^-[E=stream1:1,E=stream2:1]
curl -IkL -H 'Referer: http://localhost/buy/id:no:1234567' 'localhost/applications/buy/live-stream/list/en-us/index.html'
<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]
</IfModule>
Header set X-Frame-Options "SAMEORIGIN" env=!stream1
Header set Content-Security-Policy "frame-ancestors *.mydomain.com:443;" env=!stream2
Header set Content-Security-Policy "frame-ancestors ‘self’ *.google.com:443 *.mydomain.com:443 mydomain2.com:443;” env=stream2