lighttpd and WordPress MU (revisited)

[spanish]

En mi artículo anterior sobre lighttpd y WordPress MU proponía un script LUA para usar con mod_magnet como alternativa al .htaccess de Apache. Funcionar funcionaba, aunque mucha gente comentó que usar LUA por cada página servida era sobrecargar un poco el servidor (cuestionable, debería estar suficientemente optimizado) y de todas formas, yo también prefería una solución basada en url.rewrite y demás parámetros de configuración de lighty.

Varias personas sugirieron éste otro método basado exclusivamente en server.error-handler-404. El problema es que es para WordPress y no funciona con WPMU si tienes los blogs como subdirectorios, sólo con subdominios. Pero me ha dado una idea. :)

Usando url.rewrite y error-handler-404 es posible redirigir los blogs en subdirectorios donde toca, y el resto al index.php. De todas formas, éste método todavía tiene un problema: las peticiones que se redirijan al index.php vía error-handler-404 NO reciben los parámetros pasados por GET en la querystring. Es decir, si usamos algún plugin que pase parámetros, como p.ej. jLanguage que añade ?lan=XXXXX, éstas variables no le llegarán al index.php con lo que éstos plugins NO FUNCIONARÁN.

Estoy intentando mejorar más éste método, usando la variable $PHYSICAL[«existing-file»] de lighttpd 1.5.0, pero aún no he llegado a nada. Mientras tanto, la configuración sería ésta:

[/spanish]

[english]

On my previous article about lighttpd and WordPress MU I proposed a LUA script to be used via mod_magnet to handle URL rewrites, as an alternative to the Apache .htaccess file. It worked, but many people complained that using LUA for every page request was quite a load penalty for the server, which I don’t fully agree as it should be sufficiently optimized. But anyway, I’d rather use a solution based off config parameters like url.rewrite, too.

Some people suggested this other method which only used server.error-handler-404. The problem is that it’s designed for standard WordPress, and doesn’t handle WPMU directory-based blogs well. But it set me on the right track anyway. :)

By using both url.rewrite and error-handler-404, you can redirect directory-blogs to the base files and all the rest to the index.php file. Anyway this method still has one big problem: all the queries redirected to index.php by the error-handler-404 will lose all the querystring variables, rendering plugins that use them (like jLanguage which uses ?lan=XXXXXX) useless. Other than that, this method seems to work.

I’m string trying to improve this configuration by using the $PHYSICAL[«existing-path»] variable in lighttpd 1.5.0, but still got nothing. In the meantime, the configuration with the querystring problem would be like this:

[/english]

[code lang=»bash»]

url.rewrite-once = (
«^/(.*/)?files/$» => «/index.php»,
«^/(.*/)?files/(.*)» => «/wp-content/blogs.php?file=$2»,
«^(/wp-admin/.*)» => «$1»,
«^/([_0-9a-zA-Z-]+/)?(wp-.*)» => «/$2»,
«^/([_0-9a-zA-Z-]+/)?(.*.php)$» => «/$2»,
)
server.error-handler-404 = «/index.php»

[/code]