¿Qué URL de activos son aceptables en una instalación MU "básica"?

9

Wordpress parece permitir que muchos URI aborden el contenido en una instalación MU. Por ejemplo:

 example.com/wp-content/blogs.dir/5/files/picture.jpg
 example.com/bob/files/picture.jpg
 example.com/bob/wp-content/blogs.dir/5/files/pictures.jpg

Todos parecen dirigirse al mismo lugar. ¿Hay más alias? ¿Cuál es canónico? ¿Alguno de estos es accidental? ¿Hay filtros relevantes?

wowest
fuente

Respuestas:

4

Respuesta corta

example.com/bob/files/picture.jpg es la URL canónica preferida para imágenes en una instalación de WordPress Multisite . Las dos URL con blogs.dirURL son esencialmente idénticas y ambas aprovechan la estructura del sistema de archivos. La ruta con 'bob' existe porque realizó una instalación de subdirectorio, no una instalación de subdominio. Existirían otras rutas en función de sus otros sitios, por ejemplo, ejemplo.com/fred/wp-content/blogs.dir/5/files/pictures.jpg. De lo contrario, no existen otros caminos.

Respuesta larga

Hay muchas cosas que uno puede explicar sobre este proceso, y no estoy 100% seguro del nivel de detalle que está buscando, por lo que me referiré a lo básico aquí.

WordPress Multisite almacena archivos por blog_id(el "5" después de "/blogs.dir/") para mantener las cosas organizadas y separar los archivos de diferentes sitios. Esta estructura de directorios no pretende ser pública. WordPress utiliza reglas de reescritura para encaminar ^files/(.+)a wp-includes/ms-files.php?file=$1, y luego se wp-includes/ms-files.phpprocesa y envía la imagen y / o algunas cabeceras votos. Hay algunas ventajas en esto:

  • En términos de seguridad, menos información siempre es mejor. "wp-content / blogs.dir / 5" es una pequeña TMI: dice que está ejecutando WordPress Multisite y que blog_ides 5.
  • La estructura de URL es idéntica a la de una instalación de sitio único. Si alguna vez trasladara un sitio de una instalación Multisite a su propio sitio, no tendría que actualizar esas referencias en la base de datos o 301 las rutas antiguas para referencias externas.
  • Se puede mover el directorio de archivos de acceso público o deny from alla través de .htaccesslo que, por ejemplo, las personas no pueden acceder a los tamaños de imagen originales si no desea.
  • Puede agregar control de acceso a archivos específicos

Hay una desventaja principal, que es que las imágenes / archivos pasan a través de PHP (y tal vez incluso requieren algunas consultas MySQL), por lo que requiere más recursos. Si tiene instalado un complemento de almacenamiento en caché, los recursos adicionales deben ser insignificantes.

Con respecto a los filtros, no puede filtrar fácilmente nada en el proceso por una razón: ni los complementos mu , los complementos ni su tema se cargan *. Lo mejor que puede hacer es anular las constantes en wp-config.php. Estas son las constantes más útiles / relevantes que puede anular:

if ( !defined( 'UPLOADBLOGSDIR' ) )
    define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );

if ( !defined( 'UPLOADS' ) ) {
    // Uploads dir relative to ABSPATH
    define( 'UPLOADS', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
    if ( 'wp-content/blogs.dir' == UPLOADBLOGSDIR )
        define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );
}

/**
 * Optional support for X-Sendfile header
 */
if ( !defined( 'WPMU_SENDFILE' ) )
    define( 'WPMU_SENDFILE', false );

/**
 * Optional support for X-Accel-Redirect header
 */
if ( !defined( 'WPMU_ACCEL_REDIRECT' ) )
    define( 'WPMU_ACCEL_REDIRECT', false );

* Aunque los complementos no se cargan, los complementos sí. Por lo tanto, si bien no puede usar complementos estándar, WordPress aún sienta las bases para hacer lo que necesite, como (como se mencionó anteriormente) agregar control de acceso a archivos confidenciales. El drop-in sunrise.phpsería un buen lugar para agregar dicho código.

Matthew Boynes
fuente
2

En instalaciones múltiples, la configuración con WordPress 3.5 o posterior, ms-files.phpse omite directamente y blogs.dirno se usa.

En cambio, las cargas se almacenan wp-content/blogs/{blog_id}y se denominan como tales. Esto significa que solo hay una forma de acceder a los archivos en una instalación de subdominio, y solo dos en la instalación de subdirectorio.

Ella a
fuente