El otro día recomendaba el plugin WPTouch iPhone Theme como uno de los mejores que existen para mostrar una versión móvil de nuestro sitio a los dispositivos mas empleados: iPod Touch, iPhone, Android. Ahora bien, este plugin tiene una incompatibilidad con otro: WP Supercache. Y cuando Miguel me preguntó por este problema caí en que no había comentado nunca la solución.
Y es que WP Supercache puentea algunas características de WordPress en cuanto a la gestión de cache, y es por eso que necesita configuración adicional.
Si usas WP Cache o la cache interna de WordPress no hay problema, solo tienes que añadir “iPhone” como ‘user agent’ que puede “ver” el sitio en directo, pero WP Supercache sirve HTML estático y no lo verá la mayoría de las veces. Si usas WP Supercache en el modo “half-on”, que es como usar WP Cache, puedes añadirle el nuevo ‘user agent‘ en las opciones del plugin y funcionará, pero si usas el ‘full-mode‘ no.
La solución pasa por modificar las reglas que WP Supercache añade al fichero ‘.htaccess‘, incorporando la excepción que queremos. Por ejemplo, para que los lectores que visiten con un iPhone nuestro blog vean la versión en directo y no la “cacheada” tendríamos que añadir esta línea:
RewriteCond %{HTTP_USER_AGENT} !^.+iPhone
Con lo que la sección de Supercache en ‘.htaccess’ quedaría así:
# BEGIN WPSuperCache
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^.+iPhone
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^.+iPhone
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
# END WPSuperCache
También puedes añadir las excepciones para iPod o Android si lo deseas o lo crees conveniente:
RewriteCond %{HTTP_USER_AGENT} !^.+iPod
RewriteCond %{HTTP_USER_AGENT} !^.+Android
¡Que usted lo cachee e iPhonee bien!
Inicio





Pingback: Bitacoras.com