-
Notifications
You must be signed in to change notification settings - Fork 259
Configuring a mobile subdomain for apache
peakpg edited this page Mar 28, 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.
- www.example.com - Public 'full' site for visitors (Cached)
- cms.example.com - Admin access (uncached)
- m.example.com - Mobile subdomain (Cached)
The first two (www and cms) are the standard CMS subdomains you configure as per the Deployment-Guide. The new mobile 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>