Пытаюсь реализовать следующее:
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
Поскольку это сайт 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