See documentation at http://mobi.infrae.com/.

mobi.devices is a set of tools that detect mobile user agents. It uses the WURFL database as well as data from the MIT mobile project.

It provides WSGI middleware that can tag a request with information about the device performing the request.

For best performance, please install pytc. It is not a package requirement since it is not available on all platforms.

Paster example configuration:

# This part describes your application
# use = ...

# The entry point to use the classifier
use = egg:mobi.devices#classifier
# cache the classification on a client side cookie (default: true)
cookie_cache = true
# Configure caching (see beaker documentation)
cache.type = ext:memcached
cache.url =
cache.lock_dir = /tmp/mobicache
# Data directory *required*. make sure directory is writable
# by the user that run the webserver
var = /var/mobi/db
# Path to wurfl file. by default it uses the one shipped with
# this package. however you should use the latest one.
wurfl_file = /var/mobi/wurfl.xml.gz

use = egg:mobi.devices#router
# Redirect mobile devices that connect to infrae.com hostname
# to m.infrae.com
infrae.com = http://m.infrae.com/

# This part configures the actual WSGI stack
pipeline = mobidevicedetection mobirouter yourapp

# This is the configuration for the paster web server.
# It must have the same name as the pipeline.
use = egg:Paste#http
host =
port = 8080
threadpool_workers = 7

If you are using Apache with rewrite rules that modify the path and you want the router to route on the original path, please add the following rule before any rewrite rule

RewriteRule ^(.*)$ - [E=ORIGINAL_PATH:$1]