Не работает изменение пути загрузки медиафайлов WordPress на поддомен

16 сент. 2019 г., 20:06:01
Просмотры: 2.97K
Голосов: 0

Я пытаюсь изменить расположение всех медиафайлов WordPress на поддомен, расположенный выше корня сайта (например, выше public_html). Я обновил настройки в wp-config.php следующим образом:

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

И обновил URL изображений для существующих записей с помощью инструмента поиска и замены в PHPmyAdmin, например, заменив все:

  • mysite.com/wp-content/uploads/ на
  • cdn.mysite.com/media/

Я также обновил таблицу wp-options, поля upload path и upload url path следующим образом:

  • upload path /myserverroot/user/cdn/media
  • upload url path https://cdn.mysite.com/media/

Однако при обновлении страниц все медиафайлы отсутствуют, а при проверке HTML тега IMG видно, что URL src дополняется базовым URL сайта следующим образом:

img src="https://mysite.com/https://cdn.mysite.com/media/2019/9/image.jpg"

Есть идеи, в чем может быть причина? Большое спасибо.

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

Константа UPLOADS определяется относительно ABSPATH, который является абсолютным путем к директории WordPress. https://wordpress.org/support/article/editing-wp-config-php/#moving-uploads-folder Вы не думали о создании символической ссылки, которая соединит эти два пути?

ChristopherJones ChristopherJones
16 сент. 2019 г. 20:58:58

Привет, я не совсем уверен, как это сделать, мои знания в этой области ограничены. Однако один совет, который я использовал — убедиться, что строка define('UPLOADS', 'https:// cdn.mysite.com/media'); добавлена перед строкой require_once( ABSPATH . 'wp-settings.php' );

tammix tammix
17 сент. 2019 г. 04:57:14

@JosuaMarcelC, помните, что UPLOADS константа всегда определяется относительно ABSPATH. Однако использование значения вроде images.josuamarcelc.com не должно вызывать проблему "у меня все изображения выглядят так "josuamarcelc.com/https://images.josua..." — так что, вы уверены, что не добавили "https://" при определении UPLOADS? Вы используете WordPress v6.0 — если нет, то какую версию? Вы пробовали отключать все плагины и/или переключаться на стандартную тему, например 2021? Проблема сохранялась?

Sally CJ Sally CJ
15 июн. 2022 г. 05:25:23

Вы также можете попробовать очистить кеши. И @tammix, какое решение вы в итоге использовали тогда?

Sally CJ Sally CJ
15 июн. 2022 г. 05:32:49

@SallyCJ я всё ещё не могу убрать ABSPATH после очистки кеша

Josua M C Josua M C
17 июн. 2022 г. 14:59:19

@JosuaMarcelC вам следовало создать собственный вопрос, чтобы вы могли добавить больше деталей, таких как используемый код и контекст, например, находится ли поддомен в ABSPATH, то есть является ли images.josuamarcelc.com поддиректорией в корневом каталоге основного домена. Вы также не ответили на мои другие вопросы, например, какая у вас версия WordPress и помогло ли отключение плагинов.

Sally CJ Sally CJ
17 июн. 2022 г. 17:56:24

@SallyCJ извините, моя ошибка, моя версия WP: Текущая версия: 6.0, я добавил define('UPLOADS', 'https://images.josuamarcelc.com'); в свой wp-config.php перед require_once ABSPATH, но это не работает

Josua M C Josua M C
19 июн. 2022 г. 09:18:46
Показать остальные 2 комментариев
Все ответы на вопрос 3
1

Это не будет работать так, как вы думаете. WordPress будет пытаться загружать вложения (изображения, PDF и т.д.) на ваш сервер, используя константу UPLOADS. Этот путь является локальным путем к файлу на сервере.


Если вы хотите использовать CDN, вы можете воспользоваться CDN-сервисом (который управляет файлами и загружает их удаленно на свой сервис) или, возможно, использовать инструмент вроде этого для перезаписи URL на лету.

Не могу сказать, насколько хорош этот плагин, но похоже, что он может делать то, что вам нужно — загружать ваши вложения на другой (удаленный) сервер.

19 июн. 2022 г. 07:35:12
Комментарии

я хочу разместить на том же сервере, но только с другим URL, используя поддомен

Josua M C Josua M C
19 июн. 2022 г. 09:51:40
0

Чтобы изменить путь к медиафайлам, вы можете изменить путь через хук или напрямую в базе данных. Однако, надежным способом в WordPress является использование простого плагина, который активирует хук и изменяет путь к медиафайлам.

Записи находятся в таблице _options, поля upload_path и upload_url_path. Вы можете установить новый путь в базе данных или использовать следующий фрагмент кода для их изменения с помощью хуков.

add_filter( 'pre_option_upload_path', function( $upload_path ) {
    return '/путь/к/статике';
});

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

Существующий контент нужно найти и заменить, чтобы все существующие медиафайлы имели правильный путь внутри контента каждой записи/страницы в базе данных. Вы найдете весь контент, включая URL/пути к медиафайлам, в таблице _posts.

21 июн. 2022 г. 13:56:34
0

Попробуйте сначала на демо-сайте.

Оставьте upload_path пустым.

Измените upload_url_path на ваш поддомен.

В phpmyadmin используйте код ниже для обновления уже загруженных изображений, прикреплённых к записям. Замените wp_posts на ваш префикс базы данных и ваши доменные имена

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

И наконец, в htaccess

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