Impossível combinar RewriteRule e Header set [duplicado]

1

Tentando implementar o seguinte:

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 

Em seguida, solicitando:

$ curl -I http://www.example.com/font.ttf
...
Access-Control-Allow-Origin: *.sadface.com

UPDATE

Graças a Jenny D, eu descobri que as regras de reescrita em outros lugares estavam fazendo um redirecionamento local para index.php, então eu modifiquei o seguinte:

# 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

Isso fornece a seguinte entrada de log:

RewriteCond: input='q=font.ttf' pattern='\.ttf' => matched

Apesar disso, ainda estou recebendo Access-Control-Allow-Origin: *.sadface.com

UPDATE 2:

Parece que env=cors:1 não está fazendo o que eu esperava, mas alterar para o seguinte corrigiu o problema:

Header set Access-Control-Allow-Origin "*.example.com" env=cors
    
por DanH 20.04.2015 / 12:00

1 resposta

2

Por ser um site do Drupal, todas as solicitações de diretório que não são de arquivo / estavam sendo redirecionadas para index.php?q=$1 . Em vez disso, precisei avaliar a string de consulta, conforme o seguinte:

# Set CORS domain for fonts.
RewriteCond %{QUERY_STRING} \.ttf
RewriteRule ^(.*)$ $1 [E=cors:1]
Header set Access-Control-Allow-Origin "*.example.com" env=cors
    
por 20.04.2015 / 14:16