Некоторые изображения не найдены (404) на localhost

15 авг. 2013 г., 06:08:39
Просмотры: 18.5K
Голосов: 1

Я только что перенес установку 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 существует.

Скриншот папки с отсутствующим изображением

2
Комментарии

Этот вопрос решён? Помог ли мой ответ?

Ethan Rævan Ethan Rævan
2 сент. 2016 г. 13:32:19

В моём случае плагин под названием "WebP Express" создал файл .htaccess в папке uploads, который ограничивал доступ к некоторым изображениям. Попробуйте переименовать или удалить его и проверьте, сохраняется ли проблема.

Sanikookalam Sanikookalam
18 дек. 2023 г. 14:35:24
Все ответы на вопрос 3
0

Изменение значений home и siteurl в таблице wp_options к сожалению недостаточно. В ваших записях всё ещё будут использоваться URL-адреса не из локального окружения (http://domain.com), из-за чего сайт не будет отображаться корректно на localhost.

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

  1. Скачайте скрипт поиска и замены в базе данных от Interconnect IT здесь
  2. Разархивируйте файл и поместите папку в корневую директорию вашего локального сервера, где установлен WordPress, затем переименуйте папку в replace (скриншот)
  3. Перейдите в созданную папку через браузер (например: http://localhost/wordpress/replace) и вы увидите инструмент поиска/замены
  4. Дальше всё довольно интуитивно: введите старый URL в поле search for…, а новый URL в поле replace with…

Вы можете нажать кнопку dry run в разделе actions, чтобы увидеть, какие изменения будут произведены, до выполнения скрипта. После завершения не забудьте удалить папку /replace/.

2 сент. 2016 г. 13:31:40
5

Если его нет в вашем FTP-клиенте — значит, его нет на вашем сервере — и он не будет отображаться на вашем сайте. Скорее всего, это связано с кэшированием в вашем браузере. Вы пробовали очистить кэш или выполнить полную перезагрузку страницы? Механизм перезаписи WordPress не будет использовать миниатюру, если исходного изображения нет. Файл .htaccess просто загрузит index.php, который вернёт ошибку 404.

Ещё одна вещь, которую стоит проверить — убедитесь, что URL указывает туда, куда вы думаете. WordPress хранит все ссылки на изображения в базе данных в виде абсолютных URL. И если вы не сделали поиск и замену при переносе сайта, эти ссылки не обновятся. Вы упомянули, что переносили сайт, и вполне возможно, что изображение загружается со старого сервера.

15 авг. 2013 г. 08:39:53
Комментарии

Посмотрите изображение, которое я добавил. Вот в чем странность. На домене изображение отображается, хотя URL ведет на несуществующее изображение. Я провел поиск/замену, как всегда делаю, и раньше такой проблемы не было. Это странно. Я отключил кеш, но все равно получаю 404. Повторял этот процесс несколько раз — результат тот же.

elclanrs elclanrs
15 авг. 2013 г. 08:43:16

Вы очистили кеш браузера? Какие плагины у вас установлены? Хотя сложно представить, чтобы кеширующий плагин делал такое — все, что я видел, используют кеширование вывода только для разгрузки БД и построения PHP DOM. Но ассеты все равно загружаются с сервера.

George Yates George Yates
15 авг. 2013 г. 08:46:02

Я в процессе пересоздания всех миниатюр с помощью http://wordpress.org/plugins/ajax-thumbnail-rebuild/. 2 из 259, 3 из 259... посмотрим, как пойдет. Я отключил плагин Super Cache на локальном сервере, но проблема сохраняется.

elclanrs elclanrs
15 авг. 2013 г. 08:50:13

Удачи. У меня были хорошие результаты с этим вариантом, если это не поможет.

George Yates George Yates
15 авг. 2013 г. 08:52:27

Готово, не сработало. Я думаю, что, возможно, некоторые изображения были загружены с разными правами доступа, поэтому они не отображаются в FTP с моими учетными данными. Возможно, мне придется связаться с клиентом и проверить, в этом ли проблема, потому что изображения отображаются на домене, но не в FTP. Не могу придумать ничего другого, кроме этого...

elclanrs elclanrs
15 авг. 2013 г. 08:58:25
0

Возможно, это проблема с правами доступа. Перейдите в папку wp-content через консоль и введите:

chmod -R 767 uploads

Информация о правах доступа в Codex.

14 авг. 2015 г. 23:37:21