web-dev-qa-db-fra.com

Administrateur réseau multisite - erreur URL/redirection

J'ai suivi this guide pour configurer une installation WordPress optimisée pour le déploiement de git.

Fondamentalement, WordPress est déplacé dans un sous-dossier appelé wordpress, index.php et wp-config.php sont déplacés hors du sous-dossier, ainsi que wp-content.
Pour que cela fonctionne, le chemin d'accès à wp-blog-header.php est ajusté, ainsi que le chemin d'accès à wp-content.

Cela fonctionnait sans problème avec une installation sur un seul site, mais comme je suis souvent obligé de travailler avec des sites multisites, j'ai essayé d'en créer un.

Outre l'avertissement Warning! Subdirectory networks may not be fully compatible with custom wp-content directories., tout fonctionnait comme d'habitude, avec un problème:

Je ne peux pas accéder aux écrans d'administration réseau.

L'URL de l'administrateur du site se présente comme suit: http://local.dev/wordpress/wp-admin/, mais les liens vers l'administrateur du réseau se présentent comme suit: http://wp1.dev/wp-admin/network/sites.php.
Donc, vous voyez, le /wordpress/ est manquant. Si j'ajoute manuellement, les écrans d'administrateur réseau se chargent comme prévu.

Mon .htaccess ressemble à ceci:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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]
# END WordPress

et les parties pertinentes de mon wp-config.php ressemblent à ceci:

define( 'WP_ALLOW_MULTISITE', true );

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

J'ai déjà essayé de changer PATH_CURRENT_SITE de / en /wordpress/.
Cela corrige l’URL, mais l’écran de l’administrateur réseau ne se charge pas car il y a trop de redirections, il semble donc que le problème se trouve dans mon .htaccess.

Là j'ai déjà essayé ceci (comme suggéré ici ), mais cela ne résout pas le problème - la même erreur persiste:

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

La version WordPress est 4.0, le réseau a également été démarré avec cette version.

Voyez-vous ce qui ne va pas avec cette configuration? Comment puis-je corriger l'erreur "trop ​​de redirections"?

Edit: J'ai étudié la question un peu plus loin. J'ai essayé de faire la même chose avec une installation sur un seul site et cela a fonctionné sans problèmes. Je suppose que le message d'avertissement que j'ai cité est là pour une raison. Néanmoins, j'aimerais savoir s'il existe un correctif ou une solution de contournement pour cela. De plus, je suis maintenant à peu près sûr que PATH_CURRENT_SITE doit être /, ce qui signifie clairement que c'est un problème de .htaccess.

2
Sven

Le filtre network admin_url peut réécrire l'URL de l'administrateur réseau.
Mais je ne sais pas si c'est un meilleur moyen ou non.

// wp-config.php
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

// add code //
define('__WORDPRESS_CORE_DIR__', '/wordpress');

add_filter('network_admin_url', 'rewrite_my_network_admin_url', 10, 2);
function rewrite_my_network_admin_url($url, $path) {
  $networkPath = str_replace( '/wp-admin/', __WORDPRESS_CORE_DIR__ . '/wp-admin/', $url );
  return $networkPath;
}

http://chaika.hatenablog.com/entry/2018/02/03/090000 (japonais)

1
KiKiKi