На одном из моих WordPress изначально возникла проблема редиректа на ЧПУ: страница была доступна по адресу ЧПУ и по id ( /?p= ). Дублировались страницы контента в яндекс вебмастере.
Все настройки аналогичны настройкам других проектов, изменение параметров ЧПУ, отключение всех плагинов, изменение темы не помогало.
Помогло вот такое решение с использованием основного запроса, помещаем его в function.php темы
/**
* Creates 301 redirects canonical
*/
function bm_redirect_can()
{
// Is single Post
if (is_single()) {
global $wp;
$wp->parse_request();
$current_url = trim(home_url($wp->request), "/");
$redirect = get_permalink();
$surl = trim($redirect, "/");
if ($current_url != $surl) {
wp_redirect($redirect, 301);
exit;
}
}
}
add_action('template_redirect', 'bm_redirect_can');