尝试实现如下内容:
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