3 votos

404 al intentar acortar URLs para MediaWiki con Lighttpd

Soy totalmente nuevo en esto, así que por favor ten paciencia conmigo. Instalé MediaWiki en Lighttpd sin problemas, excepto que cuando intento seguir las instrucciones de redwerks sobre cómo acortar las URL para MediaWiki en Lighttpd, siempre obtengo un frustrante error 404. Esto es lo que hice:

en lighttpd.conf:

## MediaWiki
url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)
url.rewrite-if-not-file = (
    "^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2",
    "^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2&archived=1",
)

en LocalSettings.php:

$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

La ayuda es muy apreciada, podría comenzar a llorar pronto.

1voto

Tgr Puntos 163

El método sin lloriqueo es usando el excelente generador de configuración de Redwerks.

0voto

JakeGould Puntos 2275

Nota: Este intento de respuesta también es un fracaso; simplemente no funciona. La página oficial de MediaWiki sobre este tema exacto establece lo siguiente:

¡Advertencia! Esta página de URL corta contiene malos consejos sobre cómo configurar tu servidor que podrían llevar a que algunas páginas de tu wiki no funcionen y/o podrían causarte problemas al actualizar.

usar el generador de Redworks, pero parece que eso tampoco funciona. Además, la página oficial de MediaWiki envía mensajes contradictorios sobre lo que podría funcionar. Encontré esta página sobre $wgUsePathInfo que establece este dato interesante:

Nota: Estos a menudo fallan cuando PHP está configurado en modo CGI. PATH_INFO puede ser correcto si se establece cgi.fix_pathinfo, pero nuevamente puede que no lo sea; lighttpd convierte los datos de ruta entrantes en minúsculas en sistemas con sistemas de archivos insensibles a mayúsculas y minúsculas, y ha habido informes de problemas también en Apache. Para estar seguro, seguiremos manteniéndolo desactivado de forma predeterminada en estos casos.

cgi.fix_pathinfo, pero la estoy publicando aquí como referencia. ¡Si alguien puede publicar una respuesta canónica, adelante y hágalo! ¡Siéntete libre de copiar mi respuesta si es necesario! Solo de alguna forma vamos a resolver este lío.

El resto de la respuesta que no parece funcionar sigue a continuación.


La respuesta publicada por Tgr es excelente, pero si observas la salida de ese generador a través de su configuración predeterminada para Lighted versión 1.5+, esta es la salida:

## MediaWiki
url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)

# Protegerse contra el bug 28235 (portado del archivo .htaccess de MediaWiki)
$HTTP["url"] =~ "^/w/images/" {
    $HTTP["querystring"] =~ "\.[^\\/:*?\x22<>|%]+(#|\?|$)" {
        access.deny-all = "enable"
    }
}

# Denegar acceso a la carpeta de imágenes eliminadas"
$HTTP["url"] =~ "^/w/images/deleted(/|$)" {
    access.deny-all = "enable"
}

# Denegar acceso a las carpetas en las que MediaWiki tiene un .htaccess de denegación"
$HTTP["url"] =~ "^/w/(cache|languages|maintenance|serialized)(/|$)" {
    access.deny-all = "enable"
}

# Por si acaso, ocultar .svn y .git también
$HTTP["url"] =~ "/.(svn|git)(|$)" {
    access.deny-all = "enable"
}

# Ocultar cualquier archivo .htaccess
$HTTP["url"] =~ "(^|/).ht" {
    access.deny-all = "enable"
}

# Descomenta el siguiente código si deseas ocultar el instalador/actualizador
## Denegar acceso al instalador
#$HTTP["url"] =~ "^/w/mw-config(/|$)" {
#   access.deny-all = "enable"
#}

Dado que url.rewrite-once en la parte superior es el mismo entre la configuración del autor original, se puede suponer que el problema está en este fragmento url.rewrite-if-not-file:

url.rewrite-if-not-file = (
    "^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2",
    "^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2&archived=1",
)

Por lo tanto, recomendaría simplemente configurar el fragmento inicial de código para Lighted de esta manera:

url.rewrite-once = (
    "^/wiki(/|$)" => "/w/index.php",
    "^/$" => "/w/index.php",
)

Y la configuracion para LocalSettings.php parece estar bien tal como está:

$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

Si logras que funcione, luego agrega las otras configuraciones de access.deny-all para proteger la instalación y deberías estar listo para continuar.

Pero más allá de eso, el problema podría ser que la ruta del autor original a un artículo no es /wiki/ y la ruta relativa al archivo index.php no es /w/index.php. Podría ser simplemente /index.php.

Sí, esto es confuso... Pero algunas ideas para ayudar a otros que intentan lograr este objetivo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X