У нас есть многосайтовая установка подкаталога bitnami. Каждый подкаталог является сайтом для конкретной страны, поэтому корневым сайтом является https://example.com
, а подкаталогами - https://example.com/[country code]
При разработке на http://[ip] проблем не было. После перехода на наш домен и добавления редакторов для каждого сайта у нас возникла очень специфическая проблема.
Сначала подробности:
.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress
сор-config.php
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', '[redacted].com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
define( 'WP_HOME', 'https://[redacted].com' );
define( 'WP_SITEURL', 'https://[redacted].com' );
define( 'WP_2_HOME', 'https://[redacted].com/da' );
define( 'WP_2_SITEURL', 'https://[redacted].com/da' );
define( 'WP_3_HOME', 'https://[redacted].com/de' );
define( 'WP_3_SITEURL', 'https://[redacted].com/de' );
define( 'WP_4_HOME', 'https://[redacted].com/se' );
define( 'WP_4_SITEURL', 'https://[redacted].com/se' );
define('FS_METHOD', 'direct');
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
define( 'SUNRISE', 'on' );
require_once(ABSPATH . 'wp-settings.php');
define('WP_TEMP_DIR', '/opt/bitnami/apps/wordpress/tmp');
Проблема
Время от времени значения option_values меняются в таблице wp_[id]_options
для каждого сайта. Например. select * from wp_2_options where option_name = 'siteurl';
option_value
изменится на корневой URL вместо корневого url + подкаталога (т.е. https://example.com/
вместо https://example.com/[subdirecotry]
). В результате ссылки администратора на панели мониторинга исключают подкаталог в URL-адресах. Это может привести к 404 с, так как идентификатор сообщения не существует в корневом каталоге, администраторы могут получить доступ только к панели мониторинга конкретного сайта, введя подкаталог в строке URL-адреса вручную, изменив сообщения (страницы, сообщения в блоге, шаблоны и т. Д., Которые имеют скопированы из корневого каталога и, таким образом, имеют общий идентификатор сообщения) сохраняются в корневой каталог вместо подкаталога и т. д.
Ничто не ломается на стороне пользователя. Все ссылки на самом сайте в порядке.
Всякий раз, когда мы сталкиваемся с этим или сообщаем, что мы должны вручную изменить option_value
в соответствующей таблице wp_[id]_options
обратно на корневой подкаталог url + и вернуться к более ранней после ревизии. Это раздражает, если не сказать больше.
Сначала мы думали, что это проблема, связанная с перемещением домена, но мы не начали испытывать это до тех пор, пока не начали добавлять администраторов, редакторов, seo-менеджеров и т. Д. Затем мы подумали, может быть, если у пользователя есть роли на разных сайтах , он сломался бы, когда они аутентифицировались, но устранение этой переменной не остановило повторное возникновение проблемы.