web-dev-qa-db-fra.com

Modification de l'installation multisite de subdir en une structure de répertoire de base

Maintenant que WordPress 3.5 est supposé fonctionner avec les fichiers principaux du sous-répertoire, j'ai décidé de déplacer ma configuration de développement local (sous-répertoire multisite) vers cette configuration.

Avance rapide et ce que j'ai est la suivante:

wordpress (3.5 core)

wp-content (répertoire de contenu, configuré via WP_CONTENT_DIR et WP_CONTENT_URL)

.htaccess avec:

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 avec:

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 avec:

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

Statut:

  • l'administrateur réseau fonctionne à /wordpress/wp-admin/network/, mais tous les liens tentent de pointer vers /wp-admin/network/ avec les erreurs Forbidden avec The given path was above the root path: AH00127: Cannot map GET /wp-admin/network/ HTTP/1.1 to file.
  • le site racine fonctionne à dev.rarst.net avec admin à dev.rarst.net/wordpress/wp-admin
  • d'autres sites de sous-répertoires (dev.rarst.net/*) ont des envois interrompus, et les liens vers admin et autres ne les ont pas encore obtenus.

La question en bref - dans quelle direction dois-je aller d’ici pour que tout fonctionne?

Quels liens administratifs sont même supposés être avec cette configuration (puisque le noyau est dans le sous-répertoire "réel" et que les sites sont dans le sous-répertoire "virtuel")?

4
Rarst

Vos lignes .htaccess doivent ressembler à ceci:

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 ne peut pas accéder aux emplacements en dehors de la racine du document, c’est pourquoi les chemins tels que C:\server\www\dev\ échouent. (Le code ci-dessus a été testé sur mon installation multisite localhost).

En raison de la réécriture de .htaccess, vous n'avez pas besoin de définir WP_CONFIG_DIR et WP_CONFIG_URL car ils sont calculés en conséquence par WordPress. Vous pouvez accéder à vos pages d’administration à http://dev.rarst.net/wp-admin ou http://dev.rarst.net/subsite/wp-admin.

5
shea