Algunas imágenes no encontradas 404 en localhost
Acabo de transferir una instalación de WordPress desde el dominio a mi localhost. Hice todos los pasos habituales: copiar archivos, exportar la BD y reemplazar domain.com
por localhost
, actualizar wp-config.php
y refrescar los enlaces permanentes. Todas las páginas y las reglas de reescritura personalizadas funcionan, pero algunas imágenes dan error 404.
Cuando reviso esas imágenes en el dominio real todo funciona correctamente, pero algo no parece correcto; si reviso la url de la imagen apunta a esta ruta:
http://domain.com/wp-content/uploads/2013/08/IMG_0425-185x185.jpg
¡Pero este archivo no existe! Busqué en la carpeta de uploads por FTP y el archivo no está allí, solo existe IMG_0425-185x185-150x150.jpg
. Nota que 185x185
es parte del nombre original del archivo pero 150x150
fue agregado por WP.
En localhost la imagen no aparece (404), lo cual tiene sentido.
¿Por qué la imagen aparece en el dominio cuando ni siquiera existe? ¿Está WordPress resolviendo la imagen a la miniatura generada de alguna manera? ¿Por qué no funciona en el localhost si este es el caso?
Edición:
Esto es lo que no tiene sentido. ¿Cómo es esto posible? ¿Tal vez la caché tiene algo que ver?
Como puedes ver no hay rastro de IMG_0425-185x185.jpg
en la carpeta (??) pero IMG_0425-185x185-150x150.jpg
existe.
Cambiar los valores de home
y siteurl
en tu tabla wp_options
no es suficiente, lamentablemente. Todavía tendrás el contenido de tus publicaciones con la URL que no es localhost (http://dominio.com
), lo que hará que tu sitio web no se muestre correctamente en tu entorno local.
Una vez que hayas descargado e importado tu base de datos a tu localhost, sigue estos pasos:
- Ve y descarga el script de búsqueda y reemplazo en bases de datos de Interconnect IT aquí
- Descomprime el archivo y coloca la carpeta en la raíz de tu localhost donde está instalado WordPress, luego renombra la carpeta a
replace
(captura de pantalla) - Accede a la nueva carpeta que creaste desde tu navegador (ejemplo:
http://localhost/wordpress/replace
) y verás la herramienta de búsqueda/reemplazo - Debería ser bastante intuitivo a partir de este punto: ingresa tu antigua URL en el campo
search for…
y la nueva URL en el camporeplace with…
Puedes hacer clic en el botón dry run (prueba en seco) debajo de actions para ver qué cambios se realizarán antes de ejecutar el script. Una vez que hayas terminado, asegúrate de eliminar la carpeta /replace/
.

Si no está en tu cliente FTP - por lo tanto no está en tu servidor - no aparecerá en tu sitio. Así que casi seguro es un tema de caché en tu navegador, ¿has intentado borrarlo o hacer una actualización forzada? El rewrite de WordPress no recurrirá a la miniatura si la imagen original no está ahí. El .htaccess
simplemente cargará el index.php
que devolverá un error 404.
Otra cosa que verificaría es asegurarte de que la URL apunta a donde crees que apunta. WordPress almacena todos los enlaces de imágenes como URLs absolutas en la base de datos. Y a menos que hagas un buscar+reemplazar cuando transfieres un sitio, eso no se actualizará. Dijiste que estabas moviendo el sitio y es bastante posible que en realidad estés cargando la imagen desde un servidor antiguo.

Revisa la imagen que agregué. Eso es lo extraño. En el dominio la imagen aparece aunque la URL apunta a una imagen que no existe. Hice búsqueda/reemplazo de todo como siempre hago, nunca tuve este problema. Es raro. Desactivé la caché y sigue dando 404. Repetí este proceso varias veces, misma cosa.

¿Has limpiado la caché de tu navegador? ¿Qué tipo de plugins tienes instalados? Aunque no me imagino que un plugin de caché haría eso ya que todos los que he visto usan caché de salida solo para quitar carga de la base de datos y construcción del DOM en PHP. Pero aún estás cargando recursos desde el servidor.

Estoy en el proceso de reconstruir todas las miniaturas con http://wordpress.org/plugins/ajax-thumbnail-rebuild/. 2 de 259, 3 de 259... veamos cómo va. Desactivé el plugin Super Cache en localhost y el problema persiste.

Buena suerte. He tenido buenos resultados con esta opción si eso no ayuda.

Terminé, no funcionó. Estoy pensando que tal vez algunas imágenes se subieron con permisos diferentes, por lo que no aparecen en el FTP con mis credenciales. Puede que tenga que contactar al cliente y ver si este es el problema, porque las imágenes se muestran en el dominio pero no en el FTP. No se me ocurre nada más aparte de eso...

Posiblemente sea un problema de permisos. Ve a la carpeta wp-content en la consola y escribe:
chmod -R 767 uploads
