隐藏/阻止访问wp-admin的正确方法是什么?

时间:2012-02-09 12:17:52

标签: wordpress login restrict

我正在处理这件事,因为有一段时间,我已经阅读了大量的文章和东西,但我找不到一个显示正确的方式,标准,正确的地方,无论你喜欢称之为什么,阻止访问我的wp-admin或wp-login.php

在我看到的所有Wordpress网站(精心制作的网站)上,如果您输入site.com/wp-admin,您将永远不会看到任何内容

正如我所看到的,一种方法是通过创建.htaccess文件来限制对该文件夹的访问,并通过IP限制对该文件夹的访问。似乎是“最干净”的方式。我不确定的是我有一个由我的ISP提供的动态地址,所以在一定时间我的IP会改变,这将迫使我也将.htaccess更改为我的新地址,我看不到那很实际。我也可以设置一个范围,但通过这样做,我还将授权访问该IP范围内的所有人(例如我的ISP的其他客户端)。

然后我努力寻找最佳/标准的方法来做到这一点。

任何人都可以帮助我?

由于

3 个答案:

答案 0 :(得分:3)

来自this Codex discussion - this blog article声明提供重命名wp-admin的解决方案。我没有对它进行过测试,但它确实对人们有用。

然而,

  

这个黑客有它的缺点。

     
      
  • 您帖子上的“修改”链接将不再有效。您可能希望将其从主题中删除。
  •   
  • 侧栏上的管理员链接将不再有效。您可能希望将其从主题中删除。
  •   
  • 标准登录链接将不再有效。相反,请使用书签,因为它会在您完成登录后将您重定向回隐藏的登录页面。
  •   

作为替代方案,在wp-admin登录之上还可以选择adding an Apache .htaccess password dialog。这不会隐藏它,但它会提供另一个(虽然很烦人)安全层。

如果您拥有动态IP,或者想要从不同的网络访问该网站,我不知道有一种很好的.htaccess方式来限制IP访问。

答案 1 :(得分:0)

我认为,如果您只检查admin_url参数,可以通过为site_url添加过滤器(或者甚至可能$path)来解决上述问题。< / p>

这几乎未经测试,但可能是一个很好的起点:

function my_admin_url($url = null, $path = null, $blog_id = null) {

    // This our `wp-admin` replacement
    // probably wiser to use a filter/function for this, so that you can
    // do it dynamically by checking for the actual directory or something
    $custom_admin_dir = 'my-admin';

    // Remove filename.php
    if (!empty($path))
        $url = dirname($url);

    // Remove wp-admin
    $url = dirname($url);

    // Build up a new URL
    $url = trailingslashit(trailingslashit($url) . $custom_admin_dir) . $path;

    return $url;
}

add_filter('admin_url', 'my_admin_url', 10, 3);

此外,如果您在网络网站上,可能需要考虑$blog_id参数和/或对network_admin_url过滤器执行相同的操作。

答案 2 :(得分:0)

how to secure wp-admin上有一篇文章。它也有它的缺点,因为每次更新wordpress时它都会被覆盖,但它完成了工作。