webpをサポートする
最終更新日:2022-05-09
    
    webpとは、Googleが開発している静止画用のフォーマットです。PC版ChromeでGoogle Playを見ると、スクリーンショットに使われていたりします。
pngに比べサイズが小さくなるのですが、Webで使用する場合、FirefoxやSafariが執筆時点(2015-5-7)でサポートしていないので、ブラウザを判定して
- 未対応ブラウザの場合はHTMLを差し替える
 - 未対応ブラウザの場合はpngを代わりに返す
 
といった対応が必要になります。
ここでは、後者の「未対応ブラウザの場合はpngを代わりに返す」方法をnginxの設定でやってみることにします。
前提
webpとpngはicon.webpとicon.pngのように、同じファイル名で拡張子だけ異なるとします。
conf.d配下を編集する
default.confやssl.confに、次のようなエントリーを追加します。
server {
    # 中略
    location ~ \.webp$ {
        expires 7d;
        if ($http_user_agent !~* "(Chrome|Opera|Android|Android.*Chrome)") {
            rewrite (.*)\.webp $1.png last;
            expires 7d;
        }
    }
}
「拡張子.webpなリクエストがきた時、UserAgentが指定のもの以外ならpngにする」という、当たり前といえば当たり前なエントリーを追加します。
あとはnginxを再起動するだけ!

