Вопрос или проблема
Изначально у меня была установка WordPress на бесплатном хостинговом сервисе. После того как хостинг подвергся атаке, я получил резервную копию всех файлов и базы данных и восстанавливаю сайт на локальном хосте (используя WampServer 3.1.0 на Windows 10) перед тем, как обновить его и загрузить на новую хостинг-площадку.
Проблема в том, что ссылки не работают и некоторые (не все) изображения не отображаются, даже в режиме редактирования, и вообще никак (я имею в виду, даже не отображается квадрат, указывающий на поломанное изображение). Что касается настроек, я задал url моего WordPress и url сайта (в административной консоли), чтобы они указывали на мой новый локальный url (http://localhost/b17_14344318). Я также использовал Search-Replace-DB
, чтобы заменить все экземпляры моего старого url на мой локальный url (проблемы существовали и до того, как я заменил url с помощью этого скрипта).
Пример проблемы с изображениями это логотип Facebook, который у меня был в старой установке. Поскольку он не отображался, я попробовал удалить его из поста и добавить заново, отредактировать его (в WordPress), удалить его и загрузить заново, изменить имя файла и загрузить это “новый файл”, удалить html код и написать его заново… Я также отключал плагины по одному и проверял, отображается ли изображение, но так и не добился успеха. Это изображение (как и другие с аналогичной проблемой) отображалось, когда мой сайт работал на старом хостинге, с такими же плагинами, которые у меня есть сейчас (однако версия WordPress, которую я использую сейчас, новее, чем та, что была на том хостинге).
После добавления изображения через кнопку “Добавить медиа” генерируется следующий код:
<a href="http://localhost/b17_14344318/2543-2/fb_logo/" rel="attachment wp-att-2549"><img class="alignnone size-full wp-image-2549" src="http://localhost/b17_14344318/wp-content/uploads/2018/08/fb_logo.png" alt="" width="215" height="215" /></a>
Я попробовал создать новую страницу, на случай, если что-то было повреждено в старой странице, которую я восстановил из резервной копии, но изображение все еще “невидимо”. Вот как это выглядит после того, как я добавляю изображение через кнопку “Добавить медиа”:
И вот html код, стоящий за этим:
Что касается ссылок, при нажатии на любой элемент (ссылку на пост, страницу, категорию и т.д.) я вижу эту нестилизованную страницу:
Есть идеи, что еще попробовать?
База данных WP хранит URL загруженного медиафайла. Вы можете увидеть URL, когда смотрите на медиафайл на странице Медиа.
При перемещении установки WP новому сайту присваивается новый URL. Однако URL медиафайлов в базе данных не всегда меняется, в зависимости от того, как вы сделали перенос.
Поэтому вам нужно выполнить поиск/замену в базе данных, ища старый URL и заменяя его новым URL. Вы можете сделать это вручную с помощью phpMyAdmin, но есть более простой способ – как обычно, ‘для этого есть плагин’.
Я использую ‘Better Search and Replace‘, который довольно прост в использовании. Он отлично справляется с поиском всех экземпляров старого URL и заменой его новым URL. Это исправляет любые неверные URL в медиафайлах (и в любом другом месте базы данных WP). Это то, что я использую, когда переношу сайт с одного места на другое по любой причине.
Вам потребуется выполнить поиск/замену, когда вы перенесете сайт с локальной площадки на новый хостинг. Это еще один сложный процесс, но вы, вероятно, захотите использовать плагин для этого, так как он значительно облегчает корректировку URL в базе данных.
Вы видите изображение, если вставите http://localhost/b17_14344318/wp-content/uploads/2018/08/fb_logo.png
в браузер отдельно?
Я рекомендую всегда использовать относительные пути в вашем контенте. Т.е. уберите http://localhost из ваших ссылок, путей изображений, CSS файлов и т.д. Таким образом, путь к вашему логотипу с любого места на сайте будет /b17_14344318/wp-content/uploads/2018/08/fb_logo.png
Тогда вам никогда не придется использовать какие-либо инструменты поиска и замены снова.
Ответ или решение
Когда восстанавливаем сайт WordPress на локальном сервере после переноса с другого хостинга, часто возникают проблемы с отображением изображений и работающими ссылками. Эти трудности обычно связаны с изменением URL в базе данных и некорректной привязкой файлов. Давайте разберем ваши шаги к решению этих проблем.
Анализ проблемы
-
Изображения не отображаются: Это может быть вызвано неправильными путями в базе данных или недоступностью изображений по введенным ссылкам.
-
Ссылки не работают: Обычно связано с тем, что структуры URL сохранились от старого домена, а при переносе не были изменены.
Решение
1. Проверка доступности изображений:
- Попробуйте скопировать ссылку на изображение, как, например,
http://localhost/b17_14344318/wp-content/uploads/2018/08/fb_logo.png
, и откройте в браузере. Если изображение не загружается, убедитесь, что файлы действительно есть в указанной директории на вашем локальном сервере.
2. Корректировка URL в базе данных:
- Вы упомянули, что использовали Search-Replace-DB для замены старого URL на новый. Рекомендуется также использовать плагин Better Search Replace для полной проверки всех записей в базе данных на предмет старых URL. Плагин упрощает процесс и минимизирует вероятность ошибки.
3. Использование относительных путей:
- Постарайтесь использовать относительные пути для загрузок во всех элементах контента. Вместо
http://localhost/b17_14344318/wp-content/uploads/2018/08/fb_logo.png
, используйте/b17_14344318/wp-content/uploads/2018/08/fb_logo.png
. Это уменьшит необходимость повторного поиска и замены URL при каждом переносе сайта.
Технические проверки
- Файл
.htaccess
: Убедитесь, что в корневой папке присутствует правильный файл.htaccess
. Он должен содержать базовую структуру для работы ЧПУ WordPress.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /b17_14344318/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /b17_14344318/index.php [L]
</IfModule>
# END WordPress
- Постоянные ссылки: Перейдите в админ-панели WordPress в раздел Настройки -> Постоянные ссылки и просто сохраните настройки заново. Это может перезапустить перезапись правил и устранить ошибки.
Учет будущих переносов
Когда вы будете готовиться к переносу сайта с локального сервера на новый хостинг:
- Выполните полную замену URL, используя Better Search Replace, чтобы убедиться, что все ссылки обновлены до нового домена.
- Создайте резервную копию базы данных и файлов.
Заключение
Решение проблем с URL при переносе сайта WordPress требует внимательного подхода к корректировке записей в базе данных и проверки корректности путей. Применение вышеуказанных методик поможет вам восстановить работоспособность сайта на локальном сервере и подготовиться к его дальнейшему размещению на новом хостинге.