Alcune immagini non trovate (404) in localhost
Ho appena trasferito un'installazione WordPress dal dominio al mio localhost. Ho seguito tutti i passaggi consueti: copiare i file, esportare il database sostituendo domain.com
con localhost
, aggiornare wp-config.php
e aggiornare i permalink. Tutte le pagine e le regole di rewrite personalizzate funzionano, ma alcune immagini restituiscono errore 404.
Quando controllo queste immagini sul dominio effettivo funziona tutto correttamente, ma c'è qualcosa che non torna; se controllo l'url dell'immagine punta a questo percorso:
http://domain.com/wp-content/uploads/2013/08/IMG_0425-185x185.jpg
Ma questo file non esiste! Ho controllato nella cartella uploads via FTP e il file non è presente, esiste solo IMG_0425-185x185-150x150.jpg
. Nota che 185x185
fa parte del nome file originale mentre 150x150
è stato aggiunto da WP.
In localhost l'immagine non viene visualizzata (404), il che ha senso.
Perché l'immagine viene visualizzata sul dominio quando non esiste nemmeno? WordPress sta forse risolvendo l'immagine nella miniatura generata? Perché non funziona sul localhost in questo caso?
Modifica:
Ecco ciò che non ha senso. Com'è possibile? Forse la cache c'entra qualcosa?
Come puoi vedere nessuna traccia di IMG_0425-185x185.jpg
nella cartella (??) ma IMG_0425-185x185-150x150.jpg
esiste.

Modificare solamente i valori di home
e siteurl
nella tabella wp_options
purtroppo non è sufficiente. Il contenuto dei tuoi post continuerà a contenere il tuo URL non locale (http://domain.com
), causando problemi nella visualizzazione del sito sul tuo localhost.
Dopo aver scaricato e importato il database sul tuo localhost, segui questi passaggi:
- Scarica lo script Database Search & Replace di Interconnect IT da qui
- Decomprimi il file e posiziona la cartella nella root del tuo localhost dove è installato WordPress, quindi rinomina la cartella in
replace
(screenshot) - Accedi alla nuova cartella che hai creato tramite il browser (es:
http://localhost/wordpress/replace
) e vedrai lo strumento di ricerca/sostituzione - A questo punto dovrebbe essere abbastanza intuitivo: inserisci il tuo vecchio URL nel campo
search for…
e il nuovo URL nel camporeplace with…
Puoi cliccare il pulsante dry run sotto actions per vedere quali modifiche verranno apportate prima di eseguire lo script. Una volta terminato, assicurati di rimuovere la cartella /replace/
.

Se non è presente nel tuo client FTP - quindi non sul tuo server - non verrà visualizzato sul tuo sito. Quindi è quasi sicuramente un problema di cache nel tuo browser, hai provato a svuotarla o a fare un aggiornamento forzato? Il rewrite di WordPress non passerà automaticamente alla miniatura se l'immagine originale non è presente. Il file .htaccess
caricherà semplicemente index.php
che restituirà un errore 404.
L'altra cosa che controllerei è assicurarsi che l'URL punti effettivamente dove pensi che punti. WordPress memorizza tutti i link delle immagini come URL assoluti nel database. E a meno che non esegui un find+replace quando trasferisci un sito, questi non verranno aggiornati. Hai detto che stavi spostando il sito ed è abbastanza probabile che tu stia effettivamente caricando l'immagine da un server più vecchio.

Controlla l'immagine che ho aggiunto. È la cosa strana. Sul dominio l'immagine viene visualizzata anche se l'URL punta a un'immagine che non esiste. Ho fatto search/replace come faccio sempre, mai avuto questo problema. È strano. Ho disattivato la cache e continua a darmi 404. Ho ripetuto il processo un paio di volte, stessa cosa.

Hai pulito la cache del browser? Che tipo di plugin hai installato? Anche se non riesco a immaginare che un plugin di caching faccia questo, tutti quelli che ho visto usano l'output caching solo per alleggerire il carico sul DB e sulla costruzione del DOM PHP. Ma stai comunque caricando gli asset dal server.

Sto ricostruendo tutte le miniature con http://wordpress.org/plugins/ajax-thumbnail-rebuild/. 2 su 259, 3 su 259... vediamo come va. Ho disattivato il plugin Super Cache in localhost e il problema persiste.

Buona fortuna. Io ho ottenuto buoni risultati con questa opzione se quello non dovesse funzionare.

Finito, non ha funzionato. Penso che forse alcune immagini siano state caricate con permessi diversi, quindi non compaiono nell'FTP con le mie credenziali. Potrei dover contattare il cliente e verificare se questo è il problema, perché le immagini si vedono nel dominio ma non nell'FTP. Non mi viene in mente altro se non questo...

Potrebbe essere un problema di permessi. Vai alla cartella wp-content dalla console e digita:
chmod -R 767 uploads
