Problemas con la configuración de Apache para sitios web móviles

Tengo algunos problemas para configurar Apache para un sitio web que tiene una versión normal y otra móvil. La idea era redirigir al usuario con un navegador móvil automáticamente a la versión móvil y si alguien en una PC de escritorio normal intenta conectarse a la versión móvil para redirigirlo al sitio web normal.

En este momento, redirige a un usuario móvil al sitio web móvil correctamente. Pero parece que no puede redirigir a la versión de escritorio. Además, cuando accede a la versión móvil del sitio web, muestra el mensaje predeterminado "¡Funciona!" página en lugar de la página de índice móvil por alguna razón...

Aquí está toda la configuración que usé. Ojalá alguien pueda ayudarme con esto. ¡Gracias por adelantado! Sitio web normal:

<VirtualHost *:80>
ServerAdmin webmaster@henal.local
ServerName henal.local
ServerAlias www.henal.local

DocumentRoot /var/www/henal.local
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory /var/www/henal.local>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    DirectoryIndex index.html
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/deltionkrant/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug

CustomLog ${APACHE_LOG_DIR}/deltionkrant/access.log combined

     Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

 </VirtualHost>

.htaccess sitio web normal:

RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-  mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
    RewriteRule ^$ http://m.henal.local/ [L,R=302]

Sitio web móvil:

<VirtualHost *:80>
ServerAdmin webmaster@henal.local
ServerName m.henal.local
ServerAlias henal.local

DocumentRoot /var/www/henal.local/mobile
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory /var/www/henal.local/mobile>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    DirectoryIndex index.html
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

     Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Sitio web móvil .htaccess:

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

preguntado el 22 de mayo de 12 a las 08:05

2 Respuestas

Ok, entonces está tratando de hacer una negociación de contenido aquí y está expresando expresiones regulares en el agente de usuario. Además de las reglas de rewrtile que tiene, debe considerar lo siguiente:

  1. Usando el patrón de velas del Filtro Apache Mobile en lugar de una expresión regular. Es más preciso y proporciona una mayor gama de funciones.
  2. Debe permitir que los usuarios elijan la representación/experiencia que desean. Entonces, si les presenta la versión móvil, entonces debería dejarles elegir la versión de escritorio, ya que esto podría haber sido lo que realmente querían; y viceversa.
  3. Esto podría deberse a una gran cantidad de razones, por ejemplo, tienen marcadores en el escritorio, alguien compartió una URL en la versión de escritorio, etc., etc. Su técnica de negociación de contenido es bastante básica y no tiene en cuenta ninguno de estos casos de uso.

Habiendo considerado esto, específico a sus problemas anteriores:

Intente eliminar las comillas de sus patrones RewriteCond y agregue el indicador R=302 y L para asegurarse de que ahora se ejecuten otras directivas de reescritura. es decir:

RewriteCond %{HTTP_USER_AGENT} !(android|blackberry|googlebot- mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos) [NC,R=302,L]

En segundo lugar, es probable que esté viendo el escritorio predeterminado "funciona" porque está probando en un navegador de escritorio y está siendo redirigido al host de escritorio.

contestado el 22 de mayo de 12 a las 10:05

¡Gracias por la respuesta! Esta es principalmente una demostración escolar, por lo que no se utilizará para un sitio web público (¡aunque podría crear una mejor solución con sus consejos aquí para mis sitios públicos reales!). Por eso también lo estoy configurando así. Sin embargo, realmente aprecio sus consejos y tomaré esos puntos para proyectos futuros. :) - claro

Pero traté de eliminar las comillas y agregué las 2 banderas al .htaccess. Lo probé de nuevo, pero eso no hizo ninguna diferencia. Acerca de la página "funciona", sí, lo estoy probando con el navegador en la máquina donde configuré Apache (Ubuntu virtual). Edité el archivo de hosts para que henal.local y m.henal.local se refieran a 127.0.0.1, así que tal vez esa sea la causa. Aunque el sitio web normal parece funcionar bien... - claro

ok, entonces necesitas probar con un navegador móvil. Con la configuración anterior, si ingresa m.henal.local en su navegador de escritorio, entonces se redirigirá a henal.local. Dado que su DNS no se puede resolver externamente, no podrá usar su teléfono móvil para realizar la prueba. En su lugar, ¿por qué no probar el emulador de Android? desarrollador.android.com/guide/developing/devices/emulator.html - Guillermo verde

pd +1 por hacer una demostración escolar - Guillermo verde

Ligera tangente, en respuesta a William Greenly "Dado que su DNS no se puede resolver externamente, entonces no podrá usar su teléfono móvil para probar".

Para su información Pagekite (http://pagekite.net/) facilita la exposición de localhost a la red, para facilitar las pruebas en su máquina de desarrollo desde su teléfono.

HTH alguien por ahí.

respondido 11 nov., 13:15

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.