Las reglas de WordPress también tienen excepciones

wordpress apache

wordpress apacheWordPress dio un gran paso evolutivo en la plataforma de blogs, acercándola a un sistema de gestión de contenido completo con seguimiento de revisiones, más soporte para menús personalizados y, la característica más intrigante para mí, soporte para múltiples sitios con mapeo de dominios.

Si no eres un adicto a los sistemas de gestión de contenido, está bien. Puede omitir este artículo. Pero para mis compañeros techno-geeks, code-heads y apache-dabblers, quiero compartir algo interesante y algo genial.

Multi-sitio es una función que le permite ejecutar cualquier número de sitios web de WordPress con una sola instalación de WordPress. Si administra varios sitios, es bueno porque puede instalar un grupo aprobado de temas y widgets y activarlos para los sitios de sus clientes. Existen algunos obstáculos técnicos para mapear sus dominios, pero el proceso no es difícil.

Una de las áreas problemáticas que identifiqué es la personalización del tema. Dado que los temas pueden estar disponibles para varios sitios web, cualquier personalización que realice en un tema también afectará a cualquier otro sitio que utilice ese tema en su instalación de varios sitios. Mi forma de evitar esto es duplicar un tema antes de comenzar a personalizarlo y nombrar claramente el tema para el sitio del cliente para el que lo estoy diseñando.

Otro tema interesante es lo que sucede en el archivo .htaccess de su servidor Apache. WordPress necesita reescribir rutas blog por blog y lo hace con una regla de reescritura y un archivo php.

WordPress usa la siguiente regla de reescritura:

RewriteRule ^ ([_ 0-9a-zA-Z -] + /)? Archivos /(.+) wp-includes / ms-files.php? File = $ 2 [L]

Esencialmente, cualquier cosa que esté en un subdirectorio de mysite.com/files/directory se reescribe en mysite.com/files/wp-includes/myblogfolderpath ... y aquí es donde se pone interesante. ¿Qué sucede si realmente necesita tener un archivo en su servidor que sea mysite.com/files/myfolder/myimage.jpg? Obtienes un error 404, eso es lo que sucede. La regla de reescritura de Apache entra en acción y cambia la ruta.

Por supuesto, es posible que nunca te encuentres con este problema, pero yo sí. Tenía un sitio que necesitaba usar un widget de JavaScript de otro sitio web, y necesitaba encontrar gráficos en mysite.com/files/Images/myfile. Como no había forma de cambiar el archivo en el sitio host, necesitaba encontrar una manera de hacerlo en mi servidor. La solución fácil es crear una condición de reescritura que haga una excepción para archivos específicos.

Aquí está la solución:

RewriteCond% {REQUEST_URI}! /? Files / Image / file1.jpg $
RewriteCond% {REQUEST_URI}! /? Files / Image / file2.jpg $
RewriteRule ^ ([_ 0-9a-zA-Z -] + /)? Archivos /(.+) wp-includes / ms-files.php? File = $ 2 [L]

Las condiciones de reescritura deben colocarse antes de la regla de reescritura, o este truco no funcionará. Debería ser fácil modificar esta condición para sus propios fines, en caso de que encuentre un problema similar. La solución funcionó muy bien para mí, permitiéndome sustituir los gráficos personalizados en lugar del texto alternativo menos deseable que no se adaptaba a mi diseño. Con suerte, también funcionará para usted.

¿Qué piensas?

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.