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.dir
URL 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.php
procesa 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_id
es 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 all
a través de .htaccess
lo 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.php
sería un buen lugar para agregar dicho código.