Wordpress wp-login перенаправляет на неправильный URL-адрес при использовании Forward Rewrite

У нас есть домен, который https://developer.site.com обслуживается на одном сервере. Затем у нас есть https://developer.site.com/blog, который находится в совершенно другом месте. , обслуживающий сайт wordpress. (Технически говоря, это называется «переписывание вперед».)

Интерфейс и большая часть администратора работают нормально, однако есть несколько мест, где они перенаправляются обратно на 404 на другом сервере.

Например:

https://developer.site.com/blog/wp-login.php?action=rp&key=t34T4akjihAB231sCwgJU9TU&login=abcde

Этот URL-адрес перенаправляет на 404, исключая часть / blog из URL-адреса.

При отслеживании сайта кажется, что он переходит по правильному URL-адресу, но затем Wordpress сразу отправляет его на страницу 404, так что с wordpress что-то не так. Мы проверили и перепроверили маскировку домена и убедились, что все в порядке.

Я несколько раз встречал в коде wp_safe_redirect (). Это может быть виноватым? Возможно, что-то поднимает неправильную структуру каталогов, оставляя часть / blog внутри, но я не понимаю, почему это должно иметь значение.


person mydoglixu    schedule 17.12.2016    source источник


Ответы (1)


Вы можете фильтровать перенаправления, вот что, я думаю, сработает для вас

    add_filter( 'allowed_redirect_hosts' , 'my_allowed_redirect_hosts' , 10 );
function my_allowed_redirect_hosts($content){
    $content[] = 'blog.example.com';
    $content[] = 'codex.example.com';
    // wrong: $content[] = 'http://codex.example.com';
    return $content;
}

Подробнее об этом здесь https://codex.wordpress.org/Function_Reference/wp_safe_redirect

Скопируйте следующий код в свой текстовый редактор. ИЗМЕНИТЕ ПРИМЕР ДОМЕННЫХ ЛИНИЙ ХОСТА и сохраните его как allowed-host-plugin.php, поместите в папку с именем allowed-host-plugin и загрузите его в свой каталог плагинов. Перейдите к плагинам в админке и активируйте. . Это должно работать.

    <?php    
/*
Plugin Name: Allowed Host Plugin
Description: Site specific code changes for allowed host domains no admin change in code below
*/
/* Start Adding Functions Below this Line */
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

add_filter( 'allowed_redirect_hosts' , 'my_allowed_redirect_hosts' , 10 );

function my_allowed_redirect_hosts($content){
    // Add your allowed hosts below
    $content[] = 'blog.example.com';
    $content[] = 'codex.example.com'; 
    // wrong: $content[] = 'http://codex.example.com';
    return $content;
    }

/* Stop Adding Functions Below this Line */
?>
person chop62    schedule 17.12.2016
comment
простите меня, я бы поместил это в functions.php моей темы? - person mydoglixu; 17.12.2016
comment
Вам следует написать плагин для wordpress, чтобы использовать эту функцию таким образом, чтобы вы не меняли файлы ядра. Существует множество примеров того, как написать плагин или найти простой плагин, например, hello world, переименовать его и добавить функцию. @mydoglixu codex.wordpress.org/Pluggable_Functions codex.wordpress.org/Writing_a_Plugin - person chop62; 17.12.2016
comment
Я не хочу сказать, что я бы изменил файлы ядра, но в моем wp-content / themes / themename / functions.php. Это достаточно хорошее место для этого? - person mydoglixu; 17.12.2016
comment
Нет, вы не хотите использовать функции темы, функции темы не используются в админке, и именно здесь у вас возникают проблемы, я добавлю приведенный выше код, который вы можете использовать в качестве плагина. - person chop62; 18.12.2016
comment
Это не привело к устранению моей конкретной проблемы, но вот эта: stackoverflow.com/questions/34090577/. Тем не менее, большое спасибо за информацию - я узнал больше о WordPress! - person mydoglixu; 18.12.2016
comment
@mydoglixu рад, что ты разобрался - person chop62; 19.12.2016