Вопрос или проблема
Я пытаюсь перенести установку мультисайта WP на новый сервер. Сеть состоит из простого родительского сайта, который перенаправляет пользователей на один из четырех подсайтов в зависимости от их местоположения. Например, если пользователь из Великобритании посещает сайт, его перенаправляют на подсайт site.com/uk.
Перед миграцией ресурсы тем и плагинов каждого подсайта (изображения, css, js и т.д.) были доступны по URL подсайта, например, site.com/uk/wp-content/themes/uk-theme/images/image.svg. После миграции сайта на новый сервер ресурсы больше недоступны по доменам подсайтов, но доступны по домену родительского сайта, например, site.com/wp-content/themes/uk-theme/images/image.svg. Это приводит к ошибкам 404 для всех таблиц стилей, изображений и js для каждого подсайта.
Другая проблема заключается в том, что, хотя доступ к административной панели основной сети мультисайтов возможен (site.com/wp-admin/), административные панели подсайтов недоступны, и переход на site.com/uk/wp-admin, например, дает ошибку ERR_TOO_MANY_REDIRECTS.
Мне кажется, что эти две проблемы могут быть связаны, но я не уверен. Знает ли кто-нибудь, почему это может происходить и как я могу это исправить?
Я не знаю, как была выполнена миграция, но вот некоторые вещи, которые раньше меня подводили.
Файлы: Проверьте файлы .htaccess
и wp-config.php
.
htaccess для мультисайта должен выглядеть примерно так:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавьте завершающий слеш к /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]
A файл wp-config.php должен иметь дополнительные строки, определяющие константы:
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
и т.д...
Если они уже там, вы могли бы попробовать вернуть их к обычным (не мультисайтам) версиям и пройти процесс преобразования в мультисайт вручную. Таким образом, вы можете быть уверены, что файлы верны, так как WP будет автоматически генерировать файлы и данные БД.
База данных: Таблица options
для каждой установки мультисайта должна содержать правильные site_url
и home
.
Таблица wp_blogs
(в вашем случае, вероятно, не wp_
) должна содержать path
для каждой установки.
Надеюсь, что-то из этого поможет. Добавлю больше, если что-то еще придет на ум!
Ответ или решение
При миграции установки WordPress с многосайтовой сетью на новый сервер могут возникнуть несколько распространенных проблем, связанных с URL-структурой директории и доступом к администрированию. Ваша ситуация, описанная выше, в первую очередь связана с неправильными настройками .htaccess, файла wp-config.php и базой данных.
Проблемы с доступом к ресурсам
При перемещении ваших сайтов на новый сервер возникла проблема, когда ресурсы тем и плагинов (стили, изображения, скрипты) не загружаются с пути субсайтов, например, site.com/uk/wp-content/...
, а загружаются с корневого домена site.com/wp-content/...
. Это может быть следствием:
-
Настройки .htaccess: Убедитесь, что ваш файл
.htaccess
настроен правильно для работы с многосайтовым режимом WordPress. Пример правильной конфигурации:RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # Добавляет завершающий слэш к /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]
-
Настройка файла wp-config.php: Убедитесь, что в вашем
wp-config.php
определены необходимые константы. Количество и формат должны быть следующими:define( 'WP_ALLOW_MULTISITE', true ); define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', false );
-
Настройки базы данных: Проверьте таблицы базы данных, особенно
wp_options
иwp_blogs
. В таблицеoptions
для каждого сайта должно быть правильно установлено значение дляsite_url
иhome
. Также убедитесь, что в таблицеwp_blogs
у каждого сайта корректно указанpath
.
Проблемы с доступом к админ панели
Ошибка ERR_TOO_MANY_REDIRECTS
, возникающая при попытке зайти в админку поддомена, также может быть связана с:
-
Неправильные URL-адреса: Проверьте, настроены ли возвращаемые URL-адреса для каждого субсайта в таблице
wp_blogs
. Убедитесь, что пути субсайтов совпадают с теми, что настроены в вашей системе. -
Кэширование: Если вы используете систему кэширования, попробуйте очистить кэш и проверить, не остается ли ошибка. Иногда сохраняются старые маршруты, что приводит к бесконечным перенаправлениям.
-
Проверка кук: Возможно, ваши куки не очищаются должным образом. Попробуйте очистить их в браузере, а затем снова попытайтесь зайти в панель управления.
Рекомендации по решениям
-
Проверка миграции: Убедитесь, что все файлы и база данных были перенесены корректно. Попробуйте произвести процедуру миграции заново, уделяя особое внимание сохранности всех элементов.
-
Пошаговый возврат к многосайтовой версии: Если файл конфигурации и все зависимости в порядке, можно рассмотреть возможность временного переключения на обычный режим WordPress и последующей повторной настройки многосайтовой конфигурации через админ-панель.
-
Логи ошибок: Включите отладку в WordPress, добавив
define('WP_DEBUG', true);
в файлwp-config.php
. Это может помочь выявить дополнительные ошибки и проблемы, которые неочевидны на первом этапе.
Следуя этим рекомендациям, вы сможете устранить проблемы с многосайтовой конфигурацией после миграции и обеспечить правильную работу всех функциональных возможностей сайта.