2017-09-28 21 views
0

Le but est d'obtenir la carte la valeur Content-Type à un type de fichier en utilisant -Nginx HTTP_ACCEPT ne peut pas être mis en correspondance à la variable pour la négociation de contenu

# nginx.conf 
map $http_accept $suffix { 
    "~*turtle" ".ttl"; 
    default "DEFAULT"; 
} 

qui est gérée par -

# sites-available/site 
location /ontologies { 
    root /folder; 
    add_header Vary Accept; 
    add_header X-debug-accept "$http_accept"; 
    add_header X-debug-suffix "$suffix"; 
    try_files $uri$suffix $uri =404; 
} 

Cependant, la réponse donne toujours -

# curl -I -H "Content-type: text/turtle" URL 
http_accept = */* 
suffix  = DEFAULT, which is actually (blank) 

Répondre

1

Votre problème est que vous avez accès au mauvais entête. Vous devez utiliser $http_content_type et non $http_accept

# curl -v -I -H "Content-type: text/turtle" URL 
* Trying ::1... 
* Connected to localhost (::1) port 80 (#0) 
> GET/HTTP/1.1 
> Host: localhost 
> User-Agent: curl/7.47.0 
> Accept: */* 
> Content-Type: text/turtle 

Comme vous pouvez le voir vous passé Content-Type et non Accept. Donc, en fonction de l'en-tête dont vous avez besoin, utilisez la bonne variable. Soit $http_content_type ou $http_accept