Как исправить ссылки на сайты подкаталога панели мониторинга мультисайта? - PullRequest
3 голосов
/ 23 апреля 2019

У нас есть многосайтовая установка подкаталога 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-менеджеров и т. Д. Затем мы подумали, может быть, если у пользователя есть роли на разных сайтах , он сломался бы, когда они аутентифицировались, но устранение этой переменной не остановило повторное возникновение проблемы.

1 Ответ

0 голосов
/ 30 апреля 2019

Используйте плагин с именем Duplicator

Или вам нужно обновить и ссылку site_url в вашей БД, перейти к WP Settins-> Permalinks и нажать кнопку update, чтобы переписать ваш файл htaccess.

...