Register now for Mobile Web Development and Advanced Mobile Web Development for Smartphones for Fall 2009. Classes meet 5:30pm - 9:30pm once a week for six weeks in Portland, Oregon.
See the Mobile Web Development curriculum or contact me for details.
Mobile MIME types identify the format of mobile web content: textual mobile markup documents, binary viewable and playable content like ringtones, wallpaper and videos and binary executable mobile applications intended for mobile devices.
Here are the most common mobile MIME types:
| MIME Type(s) | File Extension(s) | File Contents | Common Uses |
| application/vnd.wap.xhtml+xml application/xhtml+xml |
xhtml | XHTML-MP markup | Mobile web pages |
| text/html | html | HTML | Mobile web pages for smartphones |
| text/css | css | CSS1, CSS2 and Wireless CSS | Cascading style sheets for mobile web documents |
| text/vnd.wap.wml | wml | WML markup | Lightweight mobile web pages for older or low-end mobile devices |
| image/vnd.wap.wbmp | wbmp | Wireless Bitmap Image | Black-and-white image format used for older or low-end mobile devices that support only WML in the microbrowser. |
| text/vnd.wap.wmlscript | wmls | WML Script | Scripting language used with WML |
| text/vnd.sun.j2me.app-descriptor | jad | Java Application Descriptor | Metadata about a Java ME application for mobile devices. Contains URI to a JAR file that is the mobile application binary. |
| application/java-archive | Binary | Java Archive | Archive of compiled binary Java class files. Used as packaging format for Java ME mobile applications. |
| audio/x-midi | mid | MIDI Audio File | MIDI ringtones |
| audio/vnd.qcelp | qcp | QCELP Audio file | mobile audio |
| video/3gpp | 3gp | 3GP Video File | 3GP encoding for mobile video files |
| video/mp4 | mp4 | MPEG4 Video File | MPEG4 encoding for mobile video files |
| x-nokia-widget | wgz | Nokia Widget Archive | Home screen widget for Nokia mobile phones |
| application/vnd.wap.mms-message | mms | Binary MMS in MMS Encapsulation Protocol format | Viewing and sending MMS messages |
| application/vnd.symbian.install | sis | Symbian installer | Older file format for Symbian application installers |
| x-epoc/x-sisx-app | sisx | Symbian installer | Newer file format for Symbian application installers |
MIME types are used in several ways during a HTTP transaction between a mobile web browser and web server:
Mobile Web Browser: The mobile web browser sends a list of supported MIME types as the value of the Accept HTTP request header. The Accept request header value advertises the mobile content types supported on the device. Web servers optimized for delivering mobile content use the header’s value (and also a device database) to determine the best content to send in the HTTP response.
Web Server: The MIME type associated with a web document is used as the value of the Content-Type HTTP response header. The web server is configured to associate file extensions of mobile content with mobile MIME types. (Web servers generally do not come pre-configured to support mobile MIME types. The webmaster must manually add the MIME types.) When the web server sends a file to a mobile browser and uses the correct mobile MIME type, the mobile browser client knows how to interpret the file: as a web page, mobile application, wallpaper, ringtone, video, etc.
Web Server Template Languages: The MIME type associated with for a document can be manually overridden using a server-side template language like PHP. Here is a PHP example that uses the built-in header function to override the MIME type for a HTTP response:
<?php
header('Content-Type: text/vnd.wap.wml');
?>
It is important to correctly configure mobile MIME types on the web server because the mobile browser uses the MIME type (value of Content-Type HTTP response header) to determine whether the web file is viewed in the browser or by launching phone UI (to set a GIF as wallpaper, etc.) or by launching a native application (playing a video in the video player, etc).
This post is a quick tutorial about adding support for mobile MIME types in the Apache web server using .htaccess configuration. See this related page for comprehensive list of mobile MIME types for XHTML-MP, WML and binary files.
The Apache web server uses .htaccess files to provide a lightweight method of updating and overriding web server configuration inside a directory. A .htaccess file is an ASCII file containing plaintext configuration directives read by Apache when serving files in the directory. On UNIX servers, .htaccess is a hidden file by default, so be sure to use the shell command ‘ls -la” to view hidden and visible files to check whether a directory contains the file.
Apache extension modules specify configuration directives (or statements) found in .htaccess files. The mod_mime extension defines the AddType directive that manages associating MIME types (or content types) with file extensions.
The AddType directive uses this text format to specify the MIME type and a space-delimited list of associated file extensions:
AddType <MIME type> <file extension> [<file extension>] …
When a HTTP request is made for a file with the configured file extension, Apache serves the content and sends the MIME type as the value of the Content-Type HTTP response header.
Here is an example of using AddType directives .htaccess files to introduce new content types for mobile markup mapped to file extensions. One directive is allowed per line of the configuration file:
# Add Mobile MIME types for xhtml, wml, wbmp and wmls file extensions
AddType application/vnd.wap.xhtml+xml .xhtml
AddType text/vnd.wap.wml .wml
AddType image/vnd.wap.wbmp .wbmp
AddType text/vnd.wap.wmlscript .wmls
A single AddType directive can associate multiple file extensions with the same MIME type. Here is an example that associates xhtml and xhtm file extensions with the application/vnd.wap.xhtml+xml content type:
AddType application/vnd.wap.xhtml+xml .xhtml .xhtm
The configuration in .htaccess files affects the directory in which the file is placed and all subdirectories. But, there is no inheritance for directives in .htaccess configuration. The .htaccess file nearest to the target web document is the configuration file used to serve the document. Make sure to upload your .htaccess file into the appropriate web server location.
There are performance implications when using multiple .htaccess files across a website, especially if a single Apache instance hosts multiple domains. Because configuration is distributed across the file system, Apache must inspect the directory hierachy to determine which .htaccess file applies for a HTTP request. Think carefully when creating multiple .htaccess configuration files and centralize wherever possible.
Also, the .htaccess file must be readable by the UNIX user running the Apache httpd process.