我可以重命名wp-admin文件夹吗?


69

是否可以重命名wp-admin文件夹?

我知道我可以重命名它,但是除非得到代码的支持,否则很多事情都会中断。

如果我使用自定义文件夹名称,它将使其更加安全,默默无闻的安全性等等。

Answers:


38

不幸的是,目前尚不可能,也似乎没有意愿将其视为修改,正如您在wp-hackers列表上的最新线程以及trac上的票证上所看到的那样。

如果您真的想再次看到它,我建议:

  1. 在wp-hacker上介绍您的案例但要事先警告您的用例最好是好的,而不是“模糊不清的安全性”,否则它会像上面那样被击落。

  2. 展示你的论点一TRAC票使用相同的警告。

  3. 更好的是,将补丁程序上载到trac,以启用所需的功能。当工作已经完成时,很难说“不”(但是,当然,他们确实更愿意说“不”而不是说“是”,因此请事先警告。)


10
+1 他们确实愿意多说“不”而不是说“是”,因此请提前警告:)
Sisir 2013年

11

不可以,您不能重命名文件夹。该路径在整个WordPress源代码的多个位置进行了硬编码。

默默无闻的安全实际上并不是真正的安全。


21
充其量是不更改不良编程习惯(例如硬编码魔术数字或字符串)的懒惰借口。
hakre 2011年

6
@hakre +100 Btw,大多数人问如何隐藏“ wp- *”文件夹并不一定是在寻求安全性,他们实际上是在寻找晦涩难懂的东西。他们试图使他们的网站分析更加费劲。
维克多·法拉兹达吉

3
实际上,这并不是凭空掩饰的安全性。这是模糊的URL,是一种有效的安全技术。有关详细信息,请参见下面的答案。
cmc

1
好吧,我尝试跟进一组新的论据,但答案是:“按书这是很不错的选择”,而且还很卑鄙,“ gmail登录名也不是晦涩的url”。没有技术原因,没有解释,没有辩论,他们只是不会做。
cmc

1
WordPress比gmail更令人尊敬。原因之一是,WordPress是开源的。每个人都知道代码。默默无闻的安全性不是真正的安全性吗?但是我们不是wordpress的编码者。它是开源的。在我看来,模糊确实有助于确保安全。为什么人们要使用加密密码呢?根据这种逻辑,就没有使用加密密码....因为数据库是可见的,所以黑客可以做任何事情...我的wordpress在10倍的时间内被黑客入侵了我公司的wordpress的2倍和2倍。年...而且到目前为止,我的6-7个Gmail帐户在15年内都没有被黑客入侵...
web2students.com 2015年

11

人们一直在问这个问题,但人们一直将其标记为重复。但是,为此选择的答案实际上并不是该问题的答案。

要重命名wordpress管理员,您需要执行两个步骤。

在以下代码中,我将仪表板用作新的wp-admin的名称。将下面代码中的仪表板更改为您想要命名新管理员的名称。

首先,您需要告诉wordpress您想要更改管理URL。

在2558行上,wp-includes / link-template.php是确定管理员url的代码。

使用admin_url过滤器,您可以通过以下功能成功更改管理员的网址:

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

您可以通过以下操作测试一下您的新网址是什么:

function whats_my_admin_url() {
    $url = admin_url();
    echo '<pre><code>'; print_r( $url ); echo '</code></pre>';
    }
add_action( 'admin_notices', 'whats_my_admin_url' );

但是,如果您在通过管理员单击时注意到并非所有功能都可以正常运行,并且某些链接可能会给您404找不到或类似的内容。

其次,在您的wordpress根目录中更改.htaccess,并在开头添加以下内容。

#CUSTOM ADMIN URL REWRITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

现在,在编辑.htaccess时我不是专家,因此其中某些内容可能不是必需的。但是,我从未发现它不起作用。

这就是全部。创建一个文件并放入您的plugins文件夹或mu-plugins文件夹。(请记住,将仪表板的每个实例更改为您首选的管理URL)

<?php
/**
 * Plugin Name: Change My Admin URL
 * Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
 * Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
 * Version: 1.0
 * Author: Bryan Willis
 * Author URI: http://profiles.wordpress.org/codecandid
 * License: GPL2
 */

/* 

#CUSTOM ADMIN URL REWRITE FOR HTACCESS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

*/

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

有问题吗?

我已经有一年多没有使用这种方法了。您可能会注意到,wp-admin仍然可以正常工作,但这比任何事情都更为预防。我有一些写得不好的插件,在试图阻止或重定向wp-admin的某些地方无法对wp-admin进行硬编码。我敢肯定有一种方法可以用htaccess做到这一点,但我还没有成功解决。此外,还没有在多站点或类似的站点上对此进行过测试。

更新:替代方法

这是非常相似的,但是由于某种原因,我的上述答案并未在我尝试过的每个主机上都起作用。

添加 .htaccess

RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]

在mu-plugins文件夹中创建一个名为的文件,new-admin.php并将其添加到此处:

<?php
define('WP_ADMIN_DIR', 'admin');
defined('SITECOOKIEPATH') || define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

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

注意:这种方法在某些主机上似乎更好用,但是仍然存在无法将wp-admin链接重定向到新管理url的问题。这是我在下面尝试的一种方法。尽管下面的方法不起作用,但我认为它是在正确的轨道上。我不确定要使用哪个钩子。htaccess可能是一个更好的选择,但是当我尝试这种方式时,我一直在获取重定向循环。

add_action('init', 'redirect_wp_admin_url_to_404');
function redirect_wp_admin_url_to_404(){
  $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' );
    }
  }
}

这里有一个类似的方法写入类:wordpress.stackexchange.com/a/7832/76440
majick

很高兴您指出@makick的答案!这是一个很好的答案,实际上是我从中获得一些想法的地方,但是在很多情况下,这似乎对我没有用,这正是我的更改起作用的地方。我仍在尝试找出的一件事是如何重定向在URL中手动键入的所有wp-admin链接。我似乎无法弄清楚那个。如果有机会,请使用site_url过滤器(而不是)尝试我的更新答案admin_url。看来效果很好。
布莱恩·威利斯

9

WordPress正式支持的一种方法是将WordPress安装文件移动到子目录中,同时将网站保留在根目录中,如下所示:

网站网址: http://my-blog.com

管理员网址: http://my-blog.com/7nxnkkugrdzm/wp-admin

虽然这不能让您完全自由地更改管理url,但这意味着您可以在其前面加上任何喜欢的前缀。从安全的角度来看,这同样好。它还具有将所有WordPress安装文件移动到用户未知位置的好处,因此它应该是任何wordpress强化策略的一部分。

从WordPress Codex:给WordPress自己的目录

另外,请注意,虽然此安全方案称为“ 模糊URL”,但它与“ obscurity安全性”不同晦涩的URL是一种完全有效的安全方案,它与密码一样好,而晦涩的安全性依赖于使用未经验证的秘密程序。

尽管有与密码相同的注意事项:调用自定义文件夹,例如7nxnkkugrdzm,而不是happy-snappy-admin。另外,请确保您的用户知道管理员网址是秘密。


7

实际上,这里有一个很好的教程:

如何从源代码 镜像中隐藏WordPress信息

包括如何重命名wp-content,重命名wp-admin以及如何从WordPress删除generator标签。

本教程将在您的源代码中更改明显的证据或指示,从而有效地从您的站点中删除WordPress信息

它说明了如何更改文件夹名称,wp-admin登录URL,并确保login.php重定向到主站点,以便人们可以直接进入该站点。


6

如果要阻止订户级用户查看wp-admin目录,则可以在其自己的目录中创建登录/注册和配置文件/编辑页面的独立版本。然后,您可以通过htaccess或IP限制来保护您的admin文件夹。(尽管这样做,您应该为admin-ajax文件设置一个例外,因为某些插件使用它来添加um AJAX功能)。

这种方法为您提供了所需的“模糊性”(实际上并不能做很多,但是通常会使客户和经理感觉更好),并且还通过限制对管理员的访问来增加一些真正的安全性。另外,说实话,仅显示“ / login”的URL比“ wp-login.php”好看得多。

不用说,这不能使您的网站防弹。但这是一个不错的基本增强。


2

锁定管理控制面板的一种方法是利用.htaccess规则。只需将.htaccess文件添加到wp-admin目录的根目录即可。添加此文件后,只需添加以下规则即可拒绝所有IP地址并仅允许您的IP:

http://wp.tutsplus.com/tutorials/10-steps-to-securing-your-wordpress-installation/

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
whitelist address
allow from <IP ADDRESS HERE>
</LIMIT>

1

如果您想重命名wp-admin,目的是为WordPress安装增加额外的安全性,您还可以尝试使用Roots / Bedrock WordPress Boilerplate。它可以帮助隔离Web根目录,以限制对非Web文件的访问。通过将其放在自己的子目录中(例如将wp-content /重命名为app /)以及以下附加功能,它还可以帮助组织/保护整个WordPress核心:

  • 使用Composer进行依赖性管理
  • 使用特定于环境的文件轻松进行WordPress配置
  • Dotenv的环境变量
  • 用于mu插件的自动加载器(将常规插件用作mu插件)
  • 增强的安全性(使用wp-password-bcrypt分隔的Web根目录和安全密码)

您还可以查看其GitHub Repo以获得更详细的用法:



0

不,不可能用任何短代码或htaccess hack重命名wp-admin文件夹,

过去,我通过Coda(我使用的编辑器)对标签“ wp-admin,wp-content ... etc”执行完整的文件夹搜索,从而为客户端执行了相同的操作,然后从文件。

之后,您将能够安装它,但是:
您必须对要安装的插件执行相同的操作,您必须通过从新版本中清除“ wp-”标签来手动更新核心。

在所有方面,我都不建议您这样做,请保持现状,并尝试实施“用户登录/注册/配置文件”页面,以为您的用户/客户提供更好的体验。

来自Cozmolabs的 Cristian 已经编写了一个很好的教程。您可以稍微编辑一下代码,使其在任何WordPress主题中运行。

您还可以从前端添加“帖子”表单,以便管理员和具有撰写帖子能力的用户可以从前端进行操作。

在这里,您可以看到有关如何创建“前端帖子”页面的示例和代码。 前端帖子提交

您也可以在这里寻找一些不错的插件,它们具有更多功能。


0

关于从IFRAME工作WP-ADMIN有什么用?

在wp仪表板中创建一个名为“ Admin”的新页面。例如:yourdomain / admin /

您可以使用header.php page.php和和/或footer.php在模板上禁用不需要的内容,从而使用以下语句:

<?php
if(!is_page('admin')): //if not the admin page.

//wrap code not needed or wanted.

else: ?>

<style type="text/css">
    .responsive-iframe {
    position: relative;
    padding-bottom: 56.25%; /*16:9*/
    height: 0;
    overflow: hidden;

    iframe {
        position: absolute;
        top:0;
        left: 0;
        width: 100%; //or 100vw
        height: 100%; //or 100vh
    }
}   
</style>

<div class="responsive-iframe">
<iframe seamless="seamless" scrolling="yes" src="http://yourdomain/wp-admin/" frameborder="0" allowfullscreen></iframe>
</div>

<?php 
endif;

这不是很漂亮,但是至少可以在某种程度上隐藏url中的wp-admin。另一种方法是在启用掩码URL的情况下使用域转发。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.