it-swarm.cn

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

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

我知道我可以重命名它,但除非得到代码支持,否则很多东西都会破坏。

如果我使用自定义文件夹名称,它将使其更安全,安全性和所有这些。

69
Adam Dempsey

不幸的是,它目前还不可能,似乎也不会将它视为一个修改,因为你可以看到这个 wp-hackers列表上的最近线程这个票在trac上

如果你真的想看到这个被重访,我建议:

  1. 介绍你的案例 关于wp-hackers 但要预先警告你的用例最好是好的而不是“通过默默无闻的安全”,否则它会被击落如上所述。

  2. 一张trac票证中提出你的论点 同样的警告。

  3. 更好的是,上传 补丁 to trac,以实现您想要的功能。当工作已经完成时,很难说不(但当然,他们确实倾向于说“不”比他们说“是”更频繁,所以要预先警告。)

38
MikeSchinkel

不,您无法重命名该文件夹。该路径在整个WordPress源中的多个位置进行硬编码。

通过默默无闻的安全无论如何都不是真正的安全。

11
Viper007Bond

人们一直在问这个问题,但是人们一直把它标记为重复。然而,所选择的答案,实际上并不是问题的答案。

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

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

首先你需要告诉wordpress你要更改管理员网址。

在第2558行 wp-includes/link-template.php 是确定管理员网址的代码。

使用admin_url过滤器,您可以使用以下函数成功更改管理员的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找不到或类似的东西。

第二,更改.htaccess在你的wordpress根目录中,并在开头之前添加以下内容。

#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方面,我不是专家,所以有些可能没有必要。但是,我从来没有发现它不起作用。

这是整个事情。创建一个文件并放入插件文件夹或mu-plugins文件夹。 (记得将每个仪表板实例更改为您首选的管理员网址)

<?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]

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

<?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的问题。这是我在下面尝试过的方法。而这下面没有't work我认为它是在正确的轨道上。我不完全确定使用什么钩子.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' );
    }
  }
}
11
Bryan Willis

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

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

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

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

来自WordPress Codex: 给WordPress自己的目录

另请注意,虽然此安全方案称为Obscure URL,但它与默认安全性不同。 模糊URL是一个完全有效的安全方案,它与密码一样好,而安全隐身依赖于使用秘密未经证实的程序。

与密码一样适用相同的警告:调用自定义文件夹,如7nxnkkugrdzm,而不是happy-snappy-admin。此外,请确保您的用户知道管理员网址是一个秘密。

9
cmc

这里有一个非常好的教程:

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

包括如何重命名wp-content,重命名wp-admin,以及从WordPress中删除生成器标记。

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

它解释了如何更改文件夹名称,wp-admin登录URL,并确保login.php重定向到主站点,以便人们可以直接去那里。

7
Graeme

如果您希望让订阅者级用户看不到wp-admin目录,您可以在他们自己的目录中创建登录/注册和配置文件/编辑页面的独立版本。然后,您可以通过htaccess或IP限制保护您的管理文件夹。 (虽然如果你这样做,你应该为admin-ajax文件做一个例外,因为有些插件使用它来添加,嗯,AJAX功能)。

这种方法为您提供了您想要的“默默无闻”(实际上并没有那么多,但通常会让客户和经理感觉更好),并通过限制对管理员的访问来增加一些真正的安全性。另外,老实说,只是说“/ login”的URL看起来比“wp-login.php”好很多。

不言而喻,这不会使您的网站具有防弹性。但它是一个不错的基本增强功能。

6
MathSmath

锁定管理控制面板的一种方法是使用.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>
2
Josh

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

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

您还可以查看他们的 GitHub Repo 以获取更详细的用法:

1
Carl Alberto

从IFRAME工作WP-ADMIN怎么办?

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

您可以使用header.phppage.php和/或footer.php创建一个case语句来禁用模板上不需要的东西,使用:

<?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的域转发。

0
samjco
0
edelwater

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

在过去,我通过Coda(我使用的编辑器)对标签“wp-admin,wp-content ... etc”执行完整的文件夹搜索,为客户做了同样的事情,我从中移除了“wp-”文件。

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

在所有方面,我不建议您做这样的事情,保持原样,并尝试实施用户登录/注册/个人资料页面,为您的用户/客户提供更好的体验。

Cristian来自 Cozmolabs 写了一篇非常好的教程。您可以稍微编辑代码并使其在任何WordPress主题中运行。

您还可以从前端添加Post表单,以便具有Capabilities功能的Admin和Users可以从前端执行此操作。

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

你也可以在这里看看一些Nice 插件 它们具有更多功能。

0
Philip