Cambiar la ubicación de medios de WordPress y la ruta de subida a un subdominio no funciona

16 sept 2019, 20:06:01
Vistas: 2.97K
Votos: 0

Estoy intentando cambiar la ubicación de todos los medios de WordPress a un subdominio ubicado por encima del directorio raíz del sitio, es decir, por encima de public_html. Actualicé los ajustes en wp-config.php a:

define('UPLOADS', 'https://cdn.misitio.com/media');

Y actualicé las URLs de las imágenes en las entradas existentes usando la herramienta de buscar y reemplazar de PHPmyAdmin, por ejemplo, cambié todas las:

  • misitio.com/wp-content/uploads/ por
  • cdn.misitio.com/media/

También actualicé la tabla wp-options, los campos de ruta de subida y ruta URL de subida como se muestra:

  • ruta de subida /ruta_del_servidor/usuario/cdn/media
  • ruta URL de subida https://cdn.misitio.com/media/

Sin embargo, al actualizar las páginas veo que faltan todos los medios, y al revisar el HTML de las etiquetas IMG veo que la URL src tiene antepuesta la URL base del sitio web así:

img src="https://misitio.com/https://cdn.misitio.com/media/2019/9/imagen.jpg"

¿Alguna idea sobre cuál podría ser la causa? Muchas gracias.

7
Comentarios

La constante UPLOADS es relativa a ABSPATH, que es la ruta absoluta al directorio de WordPress. https://wordpress.org/support/article/editing-wp-config-php/#moving-uploads-folder ¿Has considerado crear un enlace simbólico (symlink) que conecte ambos?

ChristopherJones ChristopherJones
16 sept 2019 20:58:58

Hola, no estoy muy seguro de cómo hacer eso, mi conocimiento en el área es limitado. Sin embargo, el consejo que usé fue asegurarme de que la línea define('UPLOADS', 'https:// cdn.misitio.com/media'); se agregue antes de la línea require_once( ABSPATH . 'wp-settings.php' );

tammix tammix
17 sept 2019 04:57:14

@JosuaMarcelC, recuerda que la constante UPLOADS es siempre relativa a ABSPATH. Sin embargo, usar un valor como images.josuamarcelc.com no debería causar que "obtuviera esto para todas las imágenes" josuamarcelc.com/https://images.josua..." - entonces, ¿estás seguro de que no agregaste "https://" cuando definiste UPLOADS? ¿Estás usando WordPress v6.0? Si no, ¿qué versión estás usando? ¿Has intentado desactivar todos los plugins y/o cambiar a un tema predeterminado como 2021? ¿Persistió el mismo problema?

Sally CJ Sally CJ
15 jun 2022 05:25:23

También podrías intentar limpiar tus cachés. Y @tammix, ¿cuál fue la solución que terminaste usando en ese momento?

Sally CJ Sally CJ
15 jun 2022 05:32:49

@SallyCJ todavía no puedo eliminar el ABSPATH después de limpiar la caché

Josua M C Josua M C
17 jun 2022 14:59:19

@JosuaMarcelC deberías haber publicado tu propia pregunta para poder agregar más detalles como el código que usaste y más contexto, por ejemplo, si el subdominio reside en ABSPATH, es decir, si images.josuamarcelc.com es un subdirectorio en la raíz del documento para el dominio principal. Tampoco respondiste mis otras preguntas, como qué versión de WordPress usas y si desactivar los plugins ayudó.

Sally CJ Sally CJ
17 jun 2022 17:56:24

@SallyCJ lo siento, error mío, mi versión de WP es Versión actual: 6.0, puse define('UPLOADS', 'https://images.josuamarcelc.com'); en mi wp-config.php antes de require_once ABSPATH, pero no funciona

Josua M C Josua M C
19 jun 2022 09:18:46
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 3
1

Esto no funcionará como estás pensando. WordPress intentará subir archivos adjuntos (imágenes, PDFs, etc.) a tu servidor usando la constante UPLOADS, esta ruta es una ruta de archivo, local al servidor.


Si deseas usar una CDN, puedes contratar un servicio de CDN para hacer esto (gestionar archivos y subirlos remotamente a su servicio) o posiblemente usar una herramienta como esta para reescribir URLs sobre la marcha.

No puedo decir qué tan bueno es este plugin, pero parece que podría hacer lo que estás buscando, subir tus archivos adjuntos a otro servidor (remoto).

19 jun 2022 07:35:12
Comentarios

deseo poner en mi mismo servidor, pero solo la url diferente con un subdominio

Josua M C Josua M C
19 jun 2022 09:51:40
0

Para cambiar la ruta de los archivos multimedia, puedes modificar la ruta mediante un hook o directamente en la base de datos. Sin embargo, una técnica sólida en WordPress es utilizar un plugin simple que active el hook y cambie la ruta de los archivos multimedia.

Las entradas se encuentran en la tabla _options, en los campos upload_path y upload_url_path. Puedes establecer una nueva ruta en la base de datos o usar el siguiente fragmento de código para modificarlos con la ayuda de los hooks.

add_filter( 'pre_option_upload_path', function( $upload_path ) {
    return '/ruta/hacia/estaticos';
});

add_filter( 'pre_option_upload_url_path', function( $upload_url_path ) {
    return 'http://estaticos.ejemplo.org';
});

El contenido existente debe buscarse y reemplazarse para que todos los archivos multimedia tengan la ruta correcta dentro del contenido de cada entrada/página en la base de datos. Encontrarás todo el contenido, incluyendo las URLs/Rutas de los archivos multimedia, en la tabla _posts.

21 jun 2022 13:56:34
0

Prueba esto primero en un sitio web de demostración.

Deja el upload_path vacío.

Cambia el upload_url_path a tu subdominio.

En phpmyadmin usa el siguiente código para actualizar las imágenes ya subidas que están adjuntas en las publicaciones. Cambia wp_posts por el prefijo de tu base de datos y tus nombres de dominio

UPDATE wp_posts SET post_content = replace(post_content, 'https://mydemodomain.gr/wp-content/uploads/', 'https://images.mydemodomain.gr/uploads/');

Y finalmente en el htaccess

RedirectMatch 301 ^/wp-content/uploads/(.*)$ https://images.mydemodomain.gr/$1
6 sept 2022 12:07:57