Handling the many favicons on Google App Engine
Sun, 05 March 2017
It used to be just a simple favicon.ico file that you had to worry about, but more recently other formats have been creeping in. Instead of adding a huge number of handlers into your app.yaml, you can simply use this snippet (after any other image / resource references):
- url: /(.*\.(ico|png|json|xml))$ static_files: some/path/favicons/\1 upload: some/path/favicons/.*\.(ico|png|json|xml)$
The service available at http://www.favicon-generator.org/ generates a large number of files, so dumping all these into their own directory (versus the root of your project) makes them easy to distinguish against and manage.
The complete list of files is:
android-icon-36x36.png android-icon-48x48.png android-icon-72x72.png android-icon-96x96.png android-icon-144x144.png android-icon-192x192.png apple-icon.png apple-icon-57x57.png apple-icon-60x60.png apple-icon-72x72.png apple-icon-76x76.png apple-icon-114x114.png apple-icon-120x120.png apple-icon-144x144.png apple-icon-152x152.png apple-icon-180x180.png apple-icon-precomposed.png browserconfig.xml favicon.ico favicon-16x16.png favicon-32x32.png favicon-96x96.png manifest.json ms-icon-70x70.png ms-icon-144x144.png ms-icon-150x150.png ms-icon-310x310.png
Here's what you'll need then in your head:
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">