Как настроить перенаправление с www на без www в yoast seo?

Есть сайт на wordpress с установленным плагином Yoast SEO Как настроить переадресацию 301 с www на без www через yoast seo простое перенаправление или RegEx? (но, не через htaccess | nginx)


Ответы (1 шт):

Автор решения: KAGG Design

Самый быстрый способ сделать редирект - это сделать его в mu-plugin, до загрузки всех плагинов. Создайте папку /wp-content/mu-plugins, если её нет. В ней файл с любым именем и расширением php. В файл добавьте такой код:

<?php
/**
 * Redirect from www to the same url without www.
 *
 * @package so-ru-1251973
 */

/**
 * Redirect function.
 */
function my_www_redirect() {
    $site_host             = wp_parse_url( site_url(), PHP_URL_HOST );
    $site_host_without_www = preg_replace( '#^www\.#', '', $site_host );
    $site_host_with_www    = 'www.' . $site_host_without_www;

    if (
        (
        isset( $_SERVER['HTTP_HOST'] ) ?
            filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_STRING ) :
            ''
        ) === $site_host_with_www
    ) {
        require ABSPATH . WPINC . '/pluggable.php';

        $request_scheme = isset( $_SERVER['REQUEST_SCHEME'] ) ?
            filter_var( wp_unslash( $_SERVER['REQUEST_SCHEME'] ), FILTER_SANITIZE_STRING ) :
            'http';
        $request_uri    = isset( $_SERVER['REQUEST_URI'] ) ?
            filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_STRING ) :
            '/';

        wp_safe_redirect( $request_scheme . '://' . $site_host_without_www . $request_uri );
    }
}

my_www_redirect();
→ Ссылка