As regras de WordPress tamén teñen excepcións

wordpress apache
Tempo de lectura: 2 minutos

wordpress apacheWordPress deu un importante paso evolutivo na plataforma de blogs, achegándoo a un sistema completo de xestión de contidos con seguimento de revisións, máis soporte para menús personalizados e –a característica máis intrigante para min– soporte a varios sitios con mapeo de dominios.

Se non es un adicto ao sistema de xestión de contidos, está ben. Podes pasar por riba deste artigo. Pero para os meus compañeiros tecno-frikis, cabezas de código e apache-dabblers, quero compartir algo interesante e algo xenial.

Múltiples sitios é unha característica que permite executar calquera número de sitios web de WordPress cunha única instalación de WordPress. Se administras varios sitios, é bo porque podes instalar un grupo de widgets e temas aprobados e activalos para os sitios do teu cliente. Hai algúns obstáculos técnicos para mapear os teus dominios, pero o proceso non é difícil.

Unha das áreas problemáticas que identifiquei está na personalización de temas. Dado que os temas poden estar dispoñibles para varios sitios web, as personalizacións que faga para un tema tamén afectarán a calquera outro sitio que use ese tema na instalación de varios sitios. O meu xeito de evitar isto é duplicar un tema antes de comezar a personalizar e nomear claramente o tema para o sitio do cliente para o que o estilo.

Outro problema interesante é o que ocorre no ficheiro .htaccess do servidor Apache. WordPress necesita reescribir camiños blog por blog e faino cunha regra de reescritura e un ficheiro php.

WordPress usa a seguinte regra de reescritura:

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

Esencialmente, todo o que se atopa nun subdirectorio de mysite.com/files/directory reescríbese en mysite.com/files/wp-includes/myblogfolderpath… e é aquí onde resulta interesante. Que sucede se realmente precisa ter un ficheiro no seu servidor que é mysite.com/files/myfolder/myimage.jpg? Recibe un erro 404, é o que pasa. A regra de reescritura de Apache entra e cambia o camiño.

Certo, é posible que nunca atopes este problema, pero eu si. Tiña un sitio que necesitaba usar un widget javascript doutro sitio web e necesitaba atopar gráficos en mysite.com/files/Images/myfile. Dado que non había ningunha forma de cambiar o ficheiro no sitio de acollida, necesitaba descubrir un xeito de facelo no meu servidor. A solución sinxela é crear unha condición de reescritura que faga unha excepción para ficheiros específicos.

Aquí está a solución:

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

As condicións de reescritura deben colocarse antes da regra de reescritura, ou este truco non funcionará. Debería ser fácil modificar esta condición para os seus propios propósitos, se ten algún problema similar. A solución funcionou moi ben para min, permitíndome substituír gráficos personalizados en lugar do texto alternativo menos desexable que non se axustaba ao meu deseño. Con sorte, tamén funcionará para ti.

¿Que pensas?

Este sitio usa Akismet para reducir o spam. Aprende a procesar os teus datos de comentarios.