Wordpress使用Nginx将wp-admin隐藏到管理员

时间:2015-06-04 06:10:15

标签: php wordpress nginx

我想将example.com/wp-admin重定向到我的索引,并通过类似example.com/admin的内容访问WP-Admin。

我在apache做了这个,但在切换到nginx之后我不知道该怎么做?

有没有办法在不更改任何wordpress文件但更改nginx配置的情况下执行此操作? 还需要将example.com/wp-admin/index.php作为example.com/admin/index.phpexample.com/wp-admin/posts.php作为example.com/admin/posts.php等进行访问。

3 个答案:

答案 0 :(得分:1)

在我看来,如果你使用插件,它会在你的WordPress中找到安全漏洞。

您可以使用以下步骤创建您自己的登录网址,或者管理员,或者如下所示:

1。)将常量添加到wp-confing.php

define('WP_ADMIN_DIR', 'secret-folder');
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

2。)将以下过滤条添加到functions.php

add_filter('site_url',  'wpadmin_filter', 10, 3);

function wpadmin_filter( $url, $path, $orig_scheme ) {
  $old  = array( "/(wp-admin)/");
  $admin_dir = WP_ADMIN_DIR;
  $new  = array($admin_dir);
  return preg_replace( $old, $new, $url, 1);
}

3.如果您使用的是Apache

,请将以下行添加到.htaccess文件中
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]

编辑Nginx虚拟主机文件并放置以下内容:

location ~* /admin/ {
  rewrite ^/admin/(.*) /wp-admin/$1 last;
}

完成... !!!

现在,您的管理员网址将如下:http://www.yourdomain.com/secret-folder/

以下代码将限制网址:site.com/wp-admin

add_action('login_form','redirect_wp_admin');

function redirect_wp_admin(){
  $redirect_to = $_SERVER['REQUEST_URI'];

  if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
    $redirect_to = $_REQUEST['redirect_to'];
    $check_wp_admin = stristr($redirect_to, 'wp-admin');
    if($check_wp_admin){
      wp_safe_redirect( '404.php' );
    }
  }
}

编辑: 编辑Nginx虚拟主机文件并放置以下内容:

location ~* /admin/ {
  rewrite ^/admin/(.*) /wp-admin/$1 last;
}

如果您想将url从index.php重定向到admin

server {
  index index.php;

  if ($request_uri ~* "^(.*/)index\.php$") {
    return 301 $1;
  }

  location = /admin/index.php {
    return 301 $scheme://www.example.com/admin/;
  }
}

这样做的另一个好处是nginx的返回速度比重写快。

答案 1 :(得分:0)

您的意思是更改wp-admin的网址。然后你可以使用下面提到的插件 Batch

安装插件后,在settings->固定链接下,我们可以将WP-admin页面slug更改为我们需要的内容。

答案 2 :(得分:-1)

要更改管理员网址,请尝试使用以下插件 https://wordpress.org/plugins/wordfence/