2018-05-09 内网的wordpress暴露到公网后一直301重定向

  1. 实时debug nginx日志:
    [root@bd18 conf.d]# pwd
    /etc/nginx/conf.d
    [root@bd18 conf.d]# tail -100f /var/log/nginx/access.log
  2. 实时显示wordpress日志:
    [root@mexsvr4 ~]# docker logs --tail=100 -f 6b928710cc91
  3. 检查wordpress镜像的php代码中哪里导致重定向:
    root@6b928710cc91:/var/www/html# pwd
    /var/www/html
    root@6b928710cc91:/var/www/html# grep -r -i -n template_redirect *|grep filter
    wp-includes/default-filters.php:233:add_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
    wp-includes/default-filters.php:262:add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );
    wp-includes/default-filters.php:335:add_action( 'template_redirect', 'wp_old_slug_redirect' );
    wp-includes/default-filters.php:450:remove_filter( 'template_redirect', 'redirect_canonical' );
    wp-includes/default-filters.php:451:add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
    wp-includes/default-filters.php:468:add_action( 'template_redirect', '_wp_admin_bar_init', 0 );
    wp-includes/functions.php:5647:remove_filter('template_redirect', 'redirect_canonical');
    wp-includes/ms-default-filters.php:46:add_action( 'template_redirect', 'maybe_redirect_404' );
  4. wp-includes/default-filters.php:450:remove_filter , 原来是add_action,使用sed替换成remove_filter,问题解决。
    第一个命令把第450行指定内容替换掉:
    sed -i '450s/add_action/remove_filter/' wp-includes/default-filters.php
    (下面的命令只是做个记录,第一个的效果是删除第451行,第二个效果是复制第450行成为第451行:)
    sed -i '451d' wp-includes/default-filters.php
    sed -i '450p' wp-includes/default-filters.php

你可能感兴趣的:(2018-05-09 内网的wordpress暴露到公网后一直301重定向)