Некоторые изображения не найдены (404) на localhost
Я только что перенес установку WordPress с домена на локальный сервер. Выполнил все стандартные шаги: скопировал файлы, экспортировал БД и заменил domain.com на localhost, обновил wp-config.php и сбросил постоянные ссылки. Все страницы и пользовательские правила перезаписи работают, но некоторые изображения возвращают 404.
Когда я проверяю эти изображения на реальном домене, все работает нормально, но что-то выглядит странно; если посмотреть URL изображения, он указывает на такой путь:
http://domain.com/wp-content/uploads/2013/08/IMG_0425-185x185.jpg
Но этого файла не существует! Я проверил папку uploads через FTP и файла там нет, существует только IMG_0425-185x185-150x150.jpg. Обратите внимание, что 185x185 это часть оригинального имени файла, а 150x150 добавлено WordPress.
На локальном сервере изображение не отображается (404), что логично.
Почему изображение отображается на домене, когда его даже не существует? Может WordPress как-то преобразует изображение в сгенерированную миниатюру? Почему это не работает на локальном сервере в таком случае?
Дополнение:
Вот что совсем не понятно. Как это возможно? Может быть, кэш как-то влияет?
Как видите, никаких следов IMG_0425-185x185.jpg в папке (??), но IMG_0425-185x185-150x150.jpg существует.

Изменение значений home и siteurl в таблице wp_options к сожалению недостаточно. В ваших записях всё ещё будут использоваться URL-адреса не из локального окружения (http://domain.com), из-за чего сайт не будет отображаться корректно на localhost.
После того как вы скачали и импортировали базу данных на локальный сервер, выполните следующие шаги:
- Скачайте скрипт поиска и замены в базе данных от Interconnect IT здесь
- Разархивируйте файл и поместите папку в корневую директорию вашего локального сервера, где установлен WordPress, затем переименуйте папку в
replace(скриншот) - Перейдите в созданную папку через браузер (например:
http://localhost/wordpress/replace) и вы увидите инструмент поиска/замены - Дальше всё довольно интуитивно: введите старый URL в поле
search for…, а новый URL в полеreplace with…
Вы можете нажать кнопку dry run в разделе actions, чтобы увидеть, какие изменения будут произведены, до выполнения скрипта. После завершения не забудьте удалить папку /replace/.
Если его нет в вашем FTP-клиенте — значит, его нет на вашем сервере — и он не будет отображаться на вашем сайте. Скорее всего, это связано с кэшированием в вашем браузере. Вы пробовали очистить кэш или выполнить полную перезагрузку страницы? Механизм перезаписи WordPress не будет использовать миниатюру, если исходного изображения нет. Файл .htaccess просто загрузит index.php, который вернёт ошибку 404.
Ещё одна вещь, которую стоит проверить — убедитесь, что URL указывает туда, куда вы думаете. WordPress хранит все ссылки на изображения в базе данных в виде абсолютных URL. И если вы не сделали поиск и замену при переносе сайта, эти ссылки не обновятся. Вы упомянули, что переносили сайт, и вполне возможно, что изображение загружается со старого сервера.
Посмотрите изображение, которое я добавил. Вот в чем странность. На домене изображение отображается, хотя URL ведет на несуществующее изображение. Я провел поиск/замену, как всегда делаю, и раньше такой проблемы не было. Это странно. Я отключил кеш, но все равно получаю 404. Повторял этот процесс несколько раз — результат тот же.
elclanrs
Вы очистили кеш браузера? Какие плагины у вас установлены? Хотя сложно представить, чтобы кеширующий плагин делал такое — все, что я видел, используют кеширование вывода только для разгрузки БД и построения PHP DOM. Но ассеты все равно загружаются с сервера.
George Yates
Я в процессе пересоздания всех миниатюр с помощью http://wordpress.org/plugins/ajax-thumbnail-rebuild/. 2 из 259, 3 из 259... посмотрим, как пойдет. Я отключил плагин Super Cache на локальном сервере, но проблема сохраняется.
elclanrs
Удачи. У меня были хорошие результаты с этим вариантом, если это не поможет.
George Yates
Готово, не сработало. Я думаю, что, возможно, некоторые изображения были загружены с разными правами доступа, поэтому они не отображаются в FTP с моими учетными данными. Возможно, мне придется связаться с клиентом и проверить, в этом ли проблема, потому что изображения отображаются на домене, но не в FTP. Не могу придумать ничего другого, кроме этого...
elclanrs
Возможно, это проблема с правами доступа. Перейдите в папку wp-content через консоль и введите:
chmod -R 767 uploads