2012-06-14 8 views
7

que tienen dos páginas html en mi servidor web¿Cómo puedo servir páginas móviles y de escritorio separadas del mismo URI usando .htaccess?

www.example.com/desktop.html 

www.example.com/mobile.html 

En principio, el contenido y la funcionalidad de ambos es el mismo, aunque marcado es diferente (mobile.html siendo construir sobre jQuery Mobile).

Lo que me gustaría hacer es servir a todos los visitantes móviles www.example.com/mobile.html si son móviles, www.example.com/desktop.html de lo contrario, pero mantener www.example.com en la barra de direcciones, independientemente del dispositivo.

Además, una vez que el visitante está en cualquiera de las páginas, me gustaría proporcionar un enlace a la otra versión y almacenar esta preferencia en una cookie y publicarla de forma predeterminada si/cuando regresen en visitas posteriores.

¿Cómo puedo hacer esto?

También me gustaría aprovechar esta oportunidad para expresar cuánto me gusta el desbordamiento de pila, se resuelven muchos de los problemas con los que me encuentro.

Gracias

+0

http://www.google.com/search?q=site:stackoverflow.com+htaccess+mobile => http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess –

+2

Joshua, Es posible que desee consultar este artículo: http://www.alistapart.com/articles/responsive-web-design/ Esto probablemente le ahorrará algunos dolores de cabeza en el futuro. –

Respuesta

5

Agregue esto a su archivo .htaccess:

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} (android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino) [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\)|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC] 
RewriteRule ^$ /mobile.html [L] 
RewriteRule ^$ /desktop.html [L] 

me engancharon los %{HTTP_USER_AGENT} partidos de ese enlace en el comentario de Rob W. Es posible que desee revisarlo o tratar de encontrar uno más completo en google en alguna parte. Esto comprueba esencialmente si el agente de usuario es móvil, y si es así, reescribe la solicitud / internamente al /mobile.html, de lo contrario, la reescribirá en /desktop.html. Como se trata de una reescritura interna, la barra de Ubicación de URL en el navegador sigue siendo www.example.com.

+2

Todavía estoy tratando de implementar esto pero si funciona creo que puedo amarte – Joshua

+0

@Joshua ¿Funcionó? –

+2

¿Te encantará ganar? Averigüe la próxima vez, en * StackOverflow. * – Aerovistae

Cuestiones relacionadas