Unele imagini nu sunt găsite (404) pe localhost
Am transferat o instalare WordPress de pe domeniu pe localhost. Am făcut toți pașii obișnuiți: copiere fișiere, export baza de date, înlocuire domain.com
cu localhost
, actualizare wp-config.php
și reîmprospătare permalink-uri. Toate paginile și regulile personalizate de rewrite funcționează, dar unele imagini returnează eroare 404.
Când verific acele imagini pe domeniul real totul funcționează corect, dar ceva nu pare în regulă; dacă verific URL-ul imaginii acesta indică spre această cale:
http://domain.com/wp-content/uploads/2013/08/IMG_0425-185x185.jpg
Dar acest fișier nu există! Am verificat prin FTP în folderul uploads și fișierul nu este acolo, există doar IMG_0425-185x185-150x150.jpg
. Rețineți că 185x185
face parte din numele original al fișierului, dar 150x150
a fost adăugat de WordPress.
Pe localhost imaginea nu apare (404), ceea ce are sens.
De ce apare imaginea pe domeniu când nici măcar nu există? WordPress rezolvă cumva imaginea către thumbnail-ul generat? De ce nu funcționează pe localhost în acest caz?
Edit:
Aici este ceva ce nu are sens. Cum este posibil acest lucru? Poate cache-ul are de-a face cu asta?
După cum puteți vedea, nici urmă de IMG_0425-185x185.jpg
în folder (??) dar IMG_0425-185x185-150x150.jpg
există.

Schimbarea valorilor home
și siteurl
în tabelul wp_options
nu este suficient, din păcate. Conținutul postărilor va rămâne cu URL-ul original (non-localhost, http://domain.com
), ceea ce va face ca site-ul să nu se afișeze corect pe localhost.
După ce ai descărcat și importat baza de date pe localhost, urmează acești pași:
- Descarcă scriptul Interconnect IT's Database Search & Replace de aici
- Dezarhivează fișierul și plasează folderul în directorul localhost unde este instalat WordPress (în rădăcină), apoi redenumește folderul în
replace
(captură de ecran) - Accesează noul folder creat în browser (ex:
http://localhost/wordpress/replace
) și vei vedea instrumentul de căutare/înlocuire - Procesul este destul de intuitiv: introdu vechiul URL în câmpul
search for…
și noul URL înreplace with…
Poți apăsa butonul dry run (test fără modificări) din secțiunea actions pentru a vedea ce va fi înlocuit înainte de a executa scriptul. După finalizare, asigură-te că ștergi folderul /replace/
.

Dacă nu este prezent în clientul tău FTP - deci nu este pe serverul tău - nu va apărea pe site-ul tău. Așadar, este aproape sigur o problemă de caching în browserul tău, ai încercat să îl cureți sau să faci un refresh forțat? WordPress-ul nu va reveni la thumbnail dacă imaginea originală nu este acolo. Fișierul .htaccess
va încărca pur și simplu index.php
, care va returna o eroare 404.
Un alt lucru pe care l-aș verifica este să te asiguri că URL-ul indică locația pe care crezi că o indică. WordPress stochează toate legăturile imaginilor ca URL-uri absolute în baza de date. Și dacă nu faci un find+replace când muți un site, acestea nu se vor actualiza. Ai menționat că ai mutat site-ul și este posibil să încarci imaginea de pe un server mai vechi.

Verifică imaginea pe care am adăugat-o. Acesta este lucrul ciudat. Pe domeniu imaginea apare chiar dacă URL-ul indică către o imagine care nu există. Am făcut search/replace la tot ca de obicei, niciodată nu am avut această problemă. E ciudat. Am dezactivat cache-ul și tot primesc 404. Am repetat procesul de câteva ori, același lucru.

Ai golit cache-ul browserului? Ce fel de plugin-uri ai instalate? Deși nu-mi pot imagina că un plugin de caching ar face asta, toate pe care le-am văzut folosesc caching la output doar pentru a reduce încărcarea pe baza de date și construcția DOM în PHP. Dar tu tot încarci resurse de pe server.

Sunt în procesul de reconstruire a tuturor thumbnail-urilor cu http://wordpress.org/plugins/ajax-thumbnail-rebuild/. 2 din 259, 3 din 259... să vedem cum merge. Am dezactivat plugin-ul Super Cache pe localhost și problema persistă.

Mult succes. Am avut rezultate bune cu această opțiune dacă nu te ajută.

Am terminat, nu a funcționat. Mă gândesc că poate unele imagini au fost încărcate cu permisiuni diferite, așa că nu apar în FTP cu credențialele mele. Poate va trebui să contactez clientul să văd dacă asta e problema, pentru că imaginile apar în domeniu dar nu în FTP. Nu-mi vine în minte altceva în afară de asta...

Probabil este vorba de permisiuni. Accesează folderul wp-content din consolă și tastează:
chmod -R 767 uploads
