Проблемы с директориями/структурами URL мультисайтов WordPress и доступом администратора после миграции

Вопрос или проблема

Я пытаюсь перенести установку мультисайта 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/.... Это может быть следствием:

  1. Настройки .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]
  2. Настройка файла wp-config.php: Убедитесь, что в вашем wp-config.php определены необходимые константы. Количество и формат должны быть следующими:

    define( 'WP_ALLOW_MULTISITE', true );
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
  3. Настройки базы данных: Проверьте таблицы базы данных, особенно wp_options и wp_blogs. В таблице options для каждого сайта должно быть правильно установлено значение для site_url и home. Также убедитесь, что в таблице wp_blogs у каждого сайта корректно указан path.

Проблемы с доступом к админ панели

Ошибка ERR_TOO_MANY_REDIRECTS, возникающая при попытке зайти в админку поддомена, также может быть связана с:

  1. Неправильные URL-адреса: Проверьте, настроены ли возвращаемые URL-адреса для каждого субсайта в таблице wp_blogs. Убедитесь, что пути субсайтов совпадают с теми, что настроены в вашей системе.

  2. Кэширование: Если вы используете систему кэширования, попробуйте очистить кэш и проверить, не остается ли ошибка. Иногда сохраняются старые маршруты, что приводит к бесконечным перенаправлениям.

  3. Проверка кук: Возможно, ваши куки не очищаются должным образом. Попробуйте очистить их в браузере, а затем снова попытайтесь зайти в панель управления.

Рекомендации по решениям

  • Проверка миграции: Убедитесь, что все файлы и база данных были перенесены корректно. Попробуйте произвести процедуру миграции заново, уделяя особое внимание сохранности всех элементов.

  • Пошаговый возврат к многосайтовой версии: Если файл конфигурации и все зависимости в порядке, можно рассмотреть возможность временного переключения на обычный режим WordPress и последующей повторной настройки многосайтовой конфигурации через админ-панель.

  • Логи ошибок: Включите отладку в WordPress, добавив define('WP_DEBUG', true); в файл wp-config.php. Это может помочь выявить дополнительные ошибки и проблемы, которые неочевидны на первом этапе.

Следуя этим рекомендациям, вы сможете устранить проблемы с многосайтовой конфигурацией после миграции и обеспечить правильную работу всех функциональных возможностей сайта.

Оцените материал
Добавить комментарий

Капча загружается...