Назад | Перейти на главную страницу

Невозможно объединить RewriteRule и набор заголовков

Пытаюсь реализовать следующее:

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