Вопрос или проблема
Недавно мне довелось управлять блогом на WordPress (поэтому я не знаком с тем, что было сделано до этого), и чтобы начать вносить изменения, я создал локальный docker compose как песочницу. Когда я скопировал содержимое (файлы WordPress + базу данных mysql), сайт работал хорошо, за исключением ссылок, которые не перенаправляли на локальную версию, а на производственную. Поэтому, чтобы они заработали (так как я не могу получить доступ к администрированию), я заменил в таблице wp_options
значения site_url
и home
на локальный путь (http://192.168.99.100:33080
). Однако, после этого сайт больше не загружается и появляется ошибка слишком большого количества перенаправлений. Кто-нибудь знает, как это исправить?
Я также попробовал, вместо того чтобы вносить изменения в базу данных, написать их в файл wp-config.php
(согласно этой инструкции), но ничего не изменилось.
Я использую WordPress 4.9.8 в HTTP на порту 33080, а Dockerfile контейнера выглядит так:
FROM php:5.6.35-apache-jessie
RUN docker-php-ext-install mbstring mysqli pdo pdo_mysql
RUN a2enmod rewrite
RUN echo 'log_errors = On\nerror_log = /dev/stderr' >> /usr/local/etc/php/php.ini
Я совершенно нов в среде WordPress, так что если есть что-то, что я должен был сделать и не упомянул об этом, я этого не сделал. Спасибо.
ОБНОВЛЕНИЕ:
Я нашел, в чем проблема. Несмотря на то, что написано там, кажется, что WordPress, который я установил, не принимает номера портов, отличные от 80. На самом деле, я попробовал изменить порт в docker-compose с 33080 на 80, и он начал работать нормально. В базе данных для siteurl
и home
я указал только http://192.168.99.100
. Я все еще не знаю, что делать, чтобы это работало с нестандартным портом.
Вы пробовали определить WP_SITEURL и WP_HOME, чтобы указать правильный URL? Это “перезаписывает” настройки базы данных.
https://codex.wordpress.org/Editing_wp-config.php#WP_SITEURL
Если это не сработает, следующим шагом следует попробовать метод ПЕРЕНОСА
https://codex.wordpress.org/Changing_The_Site_URL#Relocate_method
Ответ или решение
Ошибка "слишком много перенаправлений" (Too Many Redirects) при изменении базового URL в WordPress может быть вызвана несколькими факторами, особенно когда вы работаете в среде Docker и пытаетесь настроить локальную версию сайта. Давайте рассмотрим возможные причины проблемы и подходы к ее решению.
Причины ошибки
-
Неправильная конфигурация URL:
После копирования файлов WordPress и базы данных на локальную машину, необходимо убедиться, что значения, хранящиеся в таблицеwp_options
, корректно указывают на ваш локальный адрес. Если вы укажете адрес с портом (например,http://192.168.99.100:33080
), это может вызвать конфликты, если WordPress не поддерживает работу с портами, отличными от 80. -
WP_SITEURL и WP_HOME:
Если вы изменили значенияsiteurl
иhome
в базе данных, но WordPress продолжает использовать старые настройки, это может означать, что настройки в файлеwp-config.php
имеют приоритет. Определение этих параметров (например,define('WP_HOME', 'http://192.168.99.100:33080');
) вwp-config.php
может помочь переопределить URL. -
Конфликтующие редиректы:
Если у вас настроены правила перенаправления (например, через файл.htaccess
или сами настройки сервера), это также может привести к циклическим перенаправлениям. Для тестирования можно временно переименовать файл.htaccess
и проверить поведение. -
Кеширование:
Некоторые плагины кеширования могут продолжать использовать старые URL, даже после их обновления. Попробуйте отключить плагины кеширования, если они есть, и очистить кеш.
Решение проблемы
-
Убедитесь в правильной настройке базы данных:
Проверьте значенияsiteurl
иhome
в таблицеwp_options
. Если вы используете порт, попробуйте сначала удалить его и протестировать работу с простым URL. -
Изменение
wp-config.php
:
Добавьте следующие строки в файлwp-config.php
:define('WP_HOME', 'http://192.168.99.100:33080'); define('WP_SITEURL', 'http://192.168.99.100:33080');
Это позволит WordPress игнорировать настройки из базы данных.
-
Используйте метод RELocate:
Вы также можете использовать метод перемещения (Relocate), как описано в документации WordPress. Для этого добавьте следующее в файлwp-config.php
:define('RELOCATING', true);
-
Проверка конфигурации сервера:
Убедитесь, что ваша конфигурация Docker и веб-сервера не создает проблем с перенаправлениями. Попробуйте временно удалить или изменить настройки перенаправления в файле.htaccess
, чтобы проверить, является ли это источником проблемы. -
Журнал ошибок:
Проверьте журналы ошибок веб-сервера и PHP для выявления более точных причин проблемы. Ваша конфигурация Docker уже настроена на логирование ошибок, что поможет в отладке.
Заключение
Работа с WordPress в среде Docker и изменение базового URL может быть сложной задачей для новичков. Однако, следуя этим рекомендациям, вы сможете устранить ошибку "слишком много перенаправлений". Если ни один из предложенных методов не поможет, рекомендуется проверить документацию WordPress и поддерживаемые плагины, так как они могут вносить дополнительные изменения в конфигурацию и поведение сайта.