Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Como habilitar apache server para sitios moviles

Hoy en dia es muy comun que naveguemos desde nuestros telefonos  smartphone's, ipad, ipod, tablet, etc. igual que en nuestro PC. Por eso muchos sitios virtuales estan haciendo una version 'mobil' para adaptar el sitio a estas pantallas, por lo general mas pequeñas y hacer la navegacion mas eficiente sin que el usuario se cance y cierre la pagina.
Esta vez veremos como configurar un web server apache para que dependiendo el dispositivo del usuario muestre nuestro sitio web normal o una versión ligera.
Usaremos un server Linux Centos 6 con web server apache instalado y actualizado a la fecha. Todo los cambios los haremos desde la cuenta root.

Tenemos 2 versiones del web site:
1- www.test.com o test.com (sitio normal)
DocumentRoot: /var/www/html/test

2- m.test.com                        (sitio móvil)
DocumentRoot: /var/www/html/mtest

-Verificamos los rpm http instalados, en caso de no tenerlos, los instalamos con yum

rpm -qa|grep http*
httpd-tools-2.2.15-5.el6.centos.i686
httpd-2.2.15-5.el6.centos.i686

-Verificamos tengamos habilitado el modulo rewrite

cd /etc/httpd/conf
grep rewrite_module *
httpd.conf:LoadModule rewrite_module modules/mod_rewrite.so

-Habilitamos el uso de vhost y creamos 2, uno para el sitio normal y otro para el móvil

cd /etc/httpd/conf
vi httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName www.test.com
    DocumentRoot /var/www/html/test
</VirtualHost>
<VirtualHost *:80>
    ServerName test.com
    DocumentRoot /var/www/html/test
</VirtualHost>
<VirtualHost *:80>
    ServerName m.test.com
    DocumentRoot /var/www/html/mtest
</VirtualHost>

Salimos guardando
-Creamos los dos escenarios. Comenzamos con el conf del sitio normal www.test.com

vi /etc/httpd/conf.d/test.conf
<Directory /var/www/html/test/>
   AllowOverride All 
</Directory>
<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC] 
  RewriteRule ^$ http://m.test.com/ [L,R=302] 
</IfModule>

Salimos guardando

-Hacemos el conf del sitio móvil negando la condición anterior del sitio normal

vi /etc/httpd/conf.d/mtest.conf
<Directory /var/www/html/mtest/>
   AllowOverride All 
</Directory>

<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC] 
  RewriteRule ^$ http://www.test.com/ [L,R=302] 
</IfModule>

Salimos guardando
-Reiniciamos el servicio apache
service httpd restart
 
En este URL tenemos la version de este articulo con un servidor Debian/Ubuntu. Espero les sea útil.
 

Share/Bookmark