web-dev-qa-db-fra.com

WP-Admin ne fonctionne pas correctement sous Wordpress multisite avec sous-répertoires

J'ai récemment installé un blog multisite Wordpress sur mon domaine.

Tout fonctionne bien, sauf pour wp-admin des sous-sites:

Je peux accéder à wp-admin d'un sous-site, mais css n'est pas chargé et lorsque j'essaie de cliquer sur un lien de navigation, le message d'erreur "Fichier non trouvé" de wordpress s'affiche.

C’est parce que cela renvoie, par exemple, à domain.com/subsite/wp-admin/post-new.php - qui n'existe pas. (domain.com/wp-admin/post-new.php existe)

Je pense aussi que css ne fonctionne pas, domain.com/subsite/wp-admin/load-styles.php et load-scripts.php sont introuvables.

Voici l'une des erreurs que je rencontre dans les outils de développement de Chrome lorsque je visite/sous-site/wp-admin

 enter image description here 

J'utilise le .htaccess standard qui est collé partout:

    # BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) 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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress

Je suppose que l'erreur doit être ici, non?

Voici wp-config - juste au cas où:

<?php

 define('WP_ALLOW_MULTISITE', true);

// ** MySQL settings - You can get this info from your web Host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'XXX');

/** MySQL database username */
define('DB_USER', 'XXX');

/** MySQL database password */
define('DB_PASSWORD', 'XXX');

/** MySQL hostname */
define('DB_Host', 'XXX');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY', XXX);
define('SECURE_AUTH_KEY',XXX);
define('LOGGED_IN_KEY',XXX);
define('NONCE_KEY',        XXX);
define('AUTH_SALT',        XXX);
define('SECURE_AUTH_SALT', XXX);
define('LOGGED_IN_SALT',   XXX);
define('NONCE_SALT',       XXX);
/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'XXX';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the Codex.
 *
 * @link https://codex.wordpress.org/Debugging_in_WordPress
 */
define('WP_DEBUG', false);


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




/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

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

define( 'WP_ALLOW_MULTISITE', true );

define ('FS_METHOD', 'direct');
?>
3
schescher

Si vous avez installé WordPress Multisite à partir de la version 3.0 à 3.4.2, vous avez le contenu correct du fichier .htaccess.

Toutefois, si vous avez commencé avec une version plus récente (version 3.5 ou supérieure) - et je suppose que c'est le cas, si vous venez d'installer WordPress Multisite récemment - votre fichier .htaccess devrait ressembler à ceci:

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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Je suppose que vous utilisez Multisite en mode sous-dossier, car dans votre question, votre URL est de la forme example.com/site/wp-admin. ( Edit: Je viens aussi de remarquer que c’est définitivement un sous-dossier par fichier wp-config.php posté.)

Voir la page Codex sur .htaccess pour plus de détails.

2
Pat J