Alterando a instalação do subdiretório multisite para subdir a estrutura do diretório principal

4

Agora que o WordPress 3.5 deve trabalhar com arquivos principais no subdiretório, decidi mover minha configuração de desenvolvimento local (subdiretório multisite) para essa configuração.

Avanço rápido e o que eu tenho é o seguinte:

wordpress (3,5 core)

wp-content (dir de conteúdo configurado por WP_CONTENT_DIR e WP_CONTENT_URL )

.htaccess com:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) C:\server\www\dev\wordpress/wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) C:\server\www\dev\wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ C:\server\www\dev\wordpress/$2 [L]
RewriteRule . index.php [L]

wp-config.php com:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'dev.rarst.net');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

index.php com:

define('WP_USE_THEMES', true);
require('./wordpress/wp-blog-header.php');

Status:

  • o administrador de rede trabalha em /wordpress/wp-admin/network/ , mas todos os links tentam apontar para /wp-admin/network/ , que erros Forbidden com The given path was above the root path: AH00127: Cannot map GET /wp-admin/network/ HTTP/1.1 to file
  • site raiz funciona em dev.rarst.net com admin em dev.rarst.net/wordpress/wp-admin
  • outros sites de subdiretório ( dev.rarst.net/* ) têm uploads quebrados, e links para admin e outras coisas ainda não chegaram até eles.

A questão em poucas palavras - em que direção eu preciso mudar daqui para fazer tudo funcionar?

Quais links de administração devem estar com essa configuração (já que o core está no subdiretório "real" e os sites estão em subdiretórios "virtuais")?

    
por Rarst 03.01.2013 / 21:45

1 resposta

5

Suas linhas .htaccess precisam ser assim:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) /wordpress/wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ /wordpress/$2 [L]
RewriteRule . index.php [L]

.htaccess não pode acessar locais fora da raiz do documento, é por isso que caminhos como C:\server\www\dev\ falham. (O código acima foi testado na minha instalação multisite localhost).

Por causa da .htaccess reescrita, você não precisa definir WP_CONFIG_DIR e WP_CONFIG_URL , eles são calculados de acordo com o WordPress. Você pode acessar suas páginas de administrador em http://dev.rarst.net/wp-admin ou http://dev.rarst.net/subsite/wp-admin

    
por shea 03.01.2013 / 21:58