Boa pergunta!
Brincando um pouco, parece que está dando certo (mais testes e um visual mais qualificado são muito bem vindos :). Testado apenas em uma instalação de desenvolvimento localhost com subdomínios. Nenhum mapeamento de domínio.
Altere a seguinte regra de regravação .htaccess
:
# uploaded files
# RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteRule ^files/(.+) dl-files.php?file=$1 [L]
Faça uma cópia de /wp-includes/ms-files.php
e coloque-a na raiz com o nome dl-files.php
.
Desative SHORTINIT
, modifique o caminho wp-load.php
e adicione uma current_user_can()
no início, por isso, torna-se:
<?php
/**
* Modified Multisite upload handler.
*
* @since 3.0.0
*
* @package WordPress
* @subpackage Multisite
*/
//define( 'SHORTINIT', true );
require_once( 'wp-load.php' );
if( !is_multisite() )
die( 'Multisite support not enabled' );
if( !current_user_can( 'subscriber' ) ) {
status_header( 403 );
die( '403 — Forbidden.' );
}
ms_file_constants();
/* ... rest of the original file ... */
Observe que a remoção do SHORTINIT
aumenta o tempo de carregamento e o consumo de memória. Leia algum lugar que pode ser um aumento de dez vezes (!?).
Discussões interessantes na lista wp-edu (não encontrei nada em wp-hackers):