Отличные способы перенаправления страниц с прикрепленными изображениями в WordPress

Метод 1. Измените файл.htaccess

Файл.htaccess – это мощный инструмент, который поможет вам перенаправить страницы с прикрепленными изображениями. Просто добавьте следующий код в свой файл.htaccess:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_URI} ^/wp-content/uploads/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpe?g|png|gif)$ - [F,L]

Этот фрагмент кода проверяет, исходит ли запрос из вашего собственного домена и соответствует ли URL-адрес пути вложения изображения. Если оба условия соблюдены, возвращается ошибка 403 Forbidden, которая фактически перенаправляет пользователя со страницы вложения.

Метод 2. Использование плагина

Если вы предпочитаете более удобный подход, вы можете использовать плагины WordPress, которые сделают перенаправление за вас. Одним из популярных вариантов является плагин «Yoast SEO». Вот как вы можете его использовать:

  1. Установите и активируйте плагин Yoast SEO.
  2. Перейдите на вкладку «SEO» на панели управления WordPress и нажмите «Внешний вид при поиске».
  3. Перейдите на вкладку «Медиа».
  4. Включить параметр «Перенаправлять URL-адреса вложений на само вложение?» вариант.
  5. Сохраните изменения.

Yoast SEO теперь автоматически перенаправляет страницы с прикрепленными изображениями на соответствующие URL-адреса вложений, предотвращая проблемы с дублированием контента.

Метод 3. Пользовательские перенаправления с помощью кода

Для тех, кто предпочитает более практичный подход, вы можете добиться перенаправления страницы вложения изображений с помощью специального кода. Вот пример использования хука template_redirect:

function redirect_image_attachment() {
    if (is_attachment()) {
        global $post;
        if ($post && isset($post->post_parent) && is_numeric($post->post_parent)) {
            wp_redirect(get_permalink($post->post_parent), 301);
            exit();
        }
    }
}
add_action('template_redirect', 'redirect_image_attachment');

Этот код проверяет, является ли текущая страница вложением изображения. Если это так, он получает постоянную ссылку родительского поста и выполняет 301-перенаправление, эффективно перенаправляя пользователя на родительский пост.