環境
- arch: amd64
- OS(userland): NetBSD 5.0.1
- kernel: NetBSD 5.99.27
- nginx: 0.8.50
コンテントネゴシエーションは、client側が送ってくるAccept-Language:ヘッダを参考に動的に応答を変更するための機能です。
nginxでは、feature request(
http://wiki.nginx.org/NginxFeatureRequests)にはのってますが、まだ実装はされていないようです。
これを、
https://gist.github.com/64c13d6133c823e9c29dを参考にうちの環境にあわせて変更しました。
うちの環境(apache httpd)では、
index.htmlがない場合、Accept-Languageヘッダを参考にindex.html.ja またはindex.html.enを参照していました。
また、foo.htmlも同様です。
server {
listen 81;
server_name www.example.org;
access_log logs/www.example.org/access.log;
error_log logs/www.example.org/error.log info;
root /somewhere/www.example.org;
location / {
index index.html;
try_files $uri $uri/ @rewrite;
}
location ~* /$ {
index index.html;
rewrite ^(.*)$ $1/index.html;
try_files $uri $uri/ @rewrite;
}
location @rewrite {
index index.html;
types {
text/html html htm shtml ja en;
}
set $langsuffix 'en';
if ($http_accept_language ~* 'ja') {
set $langsuffix 'ja';
}
rewrite ^(.*)$ $1.$langsuffix last;
}
}
この設定でAccept-Lanaguageヘッダにjaが含まれている場合はfoo.html.jaを、そうでない場合はfoo.html.enを表示できるようになりました。