无法组合 RewriteRule 和 Header 集

无法组合 RewriteRule 和 Header 集

尝试实现如下内容:

RewriteRule \.ttf$ - [E=cors:1]
Header set Access-Control-Allow-Origin "*.example.com" env=cors:1
Header set Access-Control-Allow-Origin "*.sadface.com" env=!cors:1 

然后请求:

$ curl -I http://www.example.com/font.ttf
...
Access-Control-Allow-Origin: *.sadface.com

更新

感谢 Jenny D,我发现其他地方的重写规则正在对 index.php 进行本地重定向,因此我修改如下:

# Set CORS domain for fonts.
RewriteCond %{QUERY_STRING} \.ttf
RewriteRule ^(.*)$ $1 [E=cors:1]
Header set Access-Control-Allow-Origin "*.example.com" env=cors:1
Header set Access-Control-Allow-Origin "*.sadface.com" env=!cors:1

这提供了以下日志条目:

RewriteCond: input='q=font.ttf' pattern='\\.ttf' => matched

尽管如此,我仍然Access-Control-Allow-Origin: *.sadface.com

更新2:

看起来env=cors:1没有按照我期望的方式运行,更改为以下内容可以解决问题:

Header set Access-Control-Allow-Origin "*.example.com" env=cors

答案1

由于是 Drupal 网站,所有非文件/目录请求都重定向到index.php?q=$1。我需要评估查询字符串,如下所示:

# Set CORS domain for fonts.
RewriteCond %{QUERY_STRING} \.ttf
RewriteRule ^(.*)$ $1 [E=cors:1]
Header set Access-Control-Allow-Origin "*.example.com" env=cors

相关内容