Skip to content
peakpg edited this page Feb 8, 2012 · 3 revisions

This module relies heavily on Apache and mod_rewrite in order to automatically detect what device a user is browsing the site, and redirect them accordingly. These steps cover how to configure Apache so that will end up with the following subdomains.

The first two (www and cms) are the standard CMS subdomains you configure as per the deployment guide. The new m. subdomain will serve the mobile content. Anytime you see one of the above domain names below, just substitute your project's domain for it. Here is a sample conf file for it.

NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot "/var/www/vhosts/examplesite/public"
   ServerName www.example.com
   RailsEnv production
   RewriteEngine On

   # Set a 'full site' cookie if the user wants to stay on the full site. (2 weeks cookie by default)
   RewriteCond %{QUERY_STRING} prefer_full_site=true
   RewriteRule ^/?(.*)$ http://www.example.com/$1? [L,CO=prefer_full_site:true:.example.com:840]

   # If the user wants the mobile site, set the cookie, redirect and stop.
   RewriteCond %{QUERY_STRING} prefer_mobile_site=true
   RewriteRule ^/?(.*)$ http://m.example.com/$1? [L,CO=prefer_full_site:false:.example.com:840]

   # Redirect Mobile users to m. based on user agent
   RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
   RewriteCond %{HTTP_COOKIE} !prefer_full_site=true
   RewriteRule ^/(.*) http://m.example.com/ [L,R=302]

   # Page Caching
   RewriteRule ^/$ /cache/index.html [QSA]
   RewriteRule ^([^.]+)$ /cache/$1.html [QSA]

   # Rewrite Logging (Can be commented out once you verify it works)
   RewriteLog /var/sites/mysite/log/rewrite.log
   RewriteLogLevel 9
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/var/www/vhosts/examplesite/public"
   ServerName m.example.com
   RewriteEngine On
   RewriteRule ^/$ /mobile_cache/index.html [QSA]
   RewriteRule ^([^.]+)$ /mobile_cache/$1.html [QSA]
   RailsEnv production
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/var/www/vhosts/examplesite/public"
   ServerName cms.example.com
   RailsEnv production
</VirtualHost>
Clone this wiki locally