На этот вопрос уже есть ответ здесь:
Попытка реализовать следующее:
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
isn не делал того, что я ожидал, изменение на следующее устранило проблему:
Header set Access-Control-Allow-Origin "*.example.com" env=cors
Поскольку это сайт Drupal, все запросы, не относящиеся к файлам / каталогам, перенаправлялись на индекс . 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