【问题标题】:Wordpress Hide wp-admin to admin with NginxWordpress 使用 Nginx 将 wp-admin 隐藏到管理员
【发布时间】:2015-06-04 06:10:14
【问题描述】:

我想将example.com/wp-admin 重定向到我的索引,并通过example.com/admin 之类的方式使WP-Admin 可访问。

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

有没有办法在不更改任何 wordpress 文件但更改 nginx 配置的情况下做到这一点?
还需要访问example.com/wp-admin/index.phpexample.com/admin/index.phpexample.com/wp-admin/posts.phpexample.com/admin/posts.php等。

【问题讨论】:

  • 在我看来,如果您使用插件,它会在您的 WordPress 中发现安全漏洞。
  • 是的,我也在尝试这样做
  • @DeepKakkar 它已经尝试过了。它仅适用于输入 example.com/admin/。没有其他人喜欢,如果我们输入 example.com/admin/index.php 它会返回“未找到”
  • 那么你应该进行 url 重定向。刚刚编辑的答案

标签: php wordpress nginx


【解决方案1】:

在我看来,如果您使用插件,它会在您的 WordPress 中发现安全漏洞。

您可以使用以下步骤创建自己的登录 URL,无论是 admin 还是其他方式,如下所示:

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;
}

完成...!!!

现在您的管理员 URL 将类似于:http://www.yourdomain.com/secret-folder/

以下代码将限制 URL: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 重定向到管理员

server {
  index index.php;

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

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

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

【讨论】:

  • 当我使用Appache 时它可以工作,但现在我转移到NGINX。然后它现在不工作了。
  • 首选方法是使用 NO IF-STMTS:尝试使用 # Login Short Cut location ~* /login/ { rewrite ^/login/(.*)? /wp-管理员/$1; }
  • 已经应用了。它仅适用于输入example.com/admin/。没有其他人喜欢,如果我们输入 example.com/admin/index.php 它返回“未找到”
  • 你得到了什么 admin/index.php , 404 或其他?我有一个链接给你stackoverflow.com/questions/10591258/…希望对你有帮助。
  • 不再工作了。在 apache 和 nginx 上都检查过
【解决方案2】:

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

安装插件后在settings->Permalink下我们可以将WP-admin page slug改成我们需要的。

【讨论】:

  • 在这里添加一些细节。链接会在一段时间后消失
  • 安装插件后在settings->Permalink下我们可以将WP-admin page slug改成我们需要的。
【解决方案3】:

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

【讨论】:

  • 其实我只需要将 URL 中的wp-admin 名称替换为admin
猜你喜欢
  • 2017-03-02
  • 1970-01-01
  • 2017-01-23
  • 2017-04-08
  • 2021-06-23
  • 2012-05-31
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
相关资源
最近更新 更多