Вопрос или проблема
Я переместил более 50 сайтов с живого сервера на локальный сервер за свою карьеру, но до сих пор не сталкивался с этой проблемой. Я использовал ALL IN ONE WP MIGRATION для экспорта данных с живого сервера. Я заменил URL во время процесса экспорта.
http://www.example.com/ на http://localhost/example/
Я импортировал данные в свою новую установку WordPress на локальном сервере. Все прошло хорошо. Моя домашняя страница загружается нормально. Но когда я нажимаю на логотип главной страницы, который должен перенаправить на http://localhost/example/, он перенаправляет на http://localhost/dashboard XAMPP. Когда я нажимаю на элемент меню -> Услуги, который должен перенаправить на http://localhost/example/services, он перенаправляет на http://localhost/services.
Я пытался изменить URL адрес сайта и адрес WordPress на http://localhost/example/.
Мой файл .htaccess.
# BEGIN WordPress
# Директивы (строки) между "BEGIN WordPress" и "END WordPress"
# генерируются динамически и должны изменяться только через фильтры WordPress.
# Все изменения директив между этими метками будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /example/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /example/index.php [L]
</IfModule>
# END WordPress
Любая помощь приветствуется.
перейдите в PHPMyAdmin и выберите вашу базу данных, затем проверьте wp_options -> siteurl, он должен быть http://localhost/example/
PHPMyAdmin -> открыть_базу_данных -> wp_options -> siteurl
Вы можете сделать это, выполнив SQL-запрос в phpMyAdmin. Убедитесь, что вы выбрали базу данных вашего локального сайта, а затем нажмите на SQL.
На экране SQL в phpMyAdmin скопируйте и вставьте этот код, убедитесь, что вы заменили example.com на URL вашего живого сайта и http://localhost/example на URL локального сервера вашего сайта.
UPDATE wp_options SET option_value = replace(option_value, 'https://www.example.com', 'http://localhost/example') WHERE option_name="home" OR option_name="siteurl";
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.example.com', 'http://localhost/example');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://www.example.com','http://localhost/example')
Этот запрос заменит ссылки на URL вашего живого сайта в базе данных и заменит их на URL локального сервера.
.
Ответ или решение
Проблемы, возникающие после переноса сайта с живого сервера на локальный сервер, обычно связаны с неправильной настройкой URL адресов и прав доступа. На примере вашей проблемы можно выделить несколько ключевых аспектов, которые помогут решить ее.
Теория
Когда вы переносите сайт WordPress с работающего сервера на локальный сервер, каждый URL-адрес должен быть правильно обновлён в базе данных и конфигурационных файлах. Если этого не сделать, ссылки могут по-прежнему указывать на старый домен, что приводит к неправильной работе сайта. WordPress хранит большое количество данных в БД, включая ссылки, которые указывают на различные ресурсы сайта (изображения, скрипты, стили, и т.д.).
Сообщаемая вами проблема, вероятно, связана с тем, что не все ссылки были обновлены или настройки на локальной машине конфликтуют с конфигурацией XAMPP. Правильное обновление всех ссылок в базе данных и конфигурационных файлах критически важно при переносе WordPress.
Пример
Способ, который обычно обрабатывает подобные проблемы, включает использование SQL-запросов для замены старых URL новыми. Это, как вы правильно заметили, касается таблицы wp_options
, где хранятся siteurl
и home
. Не стоит забывать также про таблицы wp_posts
и wp_postmeta
, где ссылки могут присутствовать в содержимом постов и метаданных.
Ваш пример SQL-запросов для замены URL правильный, и его можно дополнить или детализировать, чтобы убедиться, что все ссылки обновлены:
UPDATE wp_options SET option_value = replace(option_value, 'https://www.example.com', 'http://localhost/example') WHERE option_name="home" OR option_name="siteurl";
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.example.com', 'http://localhost/example');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://www.example.com','http://localhost/example');
Кроме этого, важно проверить другие таблицы на наличие кастомных ссылок, которые могли быть добавлены плагинами или пользовательскими решениями.
Применение
Чтобы обеспечить корректную работу проекта на локальном сервере XAMPP, выполните следующие шаги:
-
Проверка файла
.htaccess
: Убедитесь, что директивыRewriteBase
и пути в правилах переписывания (RewriteRule
) правильно указывают на корректные URL вашего локального сайта. -
Обновление настроек в базе данных: Убедитесь, что все строки, где могут храниться ссылки на старый сервер, были обновлены через SQL-запросы. Это важно не только для
wp_options
, но и для всех таблиц, связанных с контентом и метаданными. -
Настройка файлов конфигурации WordPress: Проверьте файл
wp-config.php
, чтобы убедиться, что он не содержит ссылок на старый сервер. Также проверьте, не включены ли какие-либо хардкодированные пути к файлам или директориям. -
Настройки XAMPP: Убедитесь, что Apache и другие службы XAMPP корректно настроены для обработки всех запросов и что ваш проект зарегистрирован правильно в конфигурационных файлах Apache (например, в
httpd-vhosts.conf
). -
Кэш и плагины: Очистите кэш браузера и WordPress, убедитесь, что содержащиеся в вашей системе плагины не содержат ссылок на старый домен (например, установить новый кэширующий плагин после переноса, чтобы устранить конфликты данных).
В результате выполнения этих шагов ваш сайт должен корректно отображаться и работать на локальном сервере. Старайтесь иметь резервные копии как файлов проекта, так и базы данных, прежде чем вносить изменения, чтобы в случае непредвиденных проблем можно было быстро вернуть всё в работоспособное состояние.