Невозможно объединить 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 isn не делал того, что я ожидал, изменение на следующее устранило проблему:

Header set Access-Control-Allow-Origin "*.example.com" env=cors
1
задан 20 April 2015 в 15:15
1 ответ

Поскольку это сайт 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
2
ответ дан 3 December 2019 в 20:55

Теги

Похожие вопросы