問題描述
是否可以重命名 wp-admin 文件夾?
我知道我可以重命名它,但除非代碼支持許多事情會破壞。
如果我使用自定義文件夾名稱,它將使其稍微更安全,安全性不明朗,所有這一切。
最佳解決方案
不幸的是,目前不可能,也不會有意願將其視為修改,您可以看到這個 recent thread on the wp-hackers list 和 this ticket on trac 。
如果你真的想看到這一點,我建議:
- 提出你的案例 on wp-hackers,但是要預先警告你的 use-case 更好,而不是 「安全性通過晦澀」,否則將被擊落如上。
- 在 a trac ticket 中提出您的論點,並提供相同的警告。
- 更好的是,將 a patch 上傳到支持您所需功能的 trac 。當工作已經完成時,更難説否定 (當然,他們更喜歡説”no” 比他們説”yes” 要好得多) 。
次佳解決方案
不,您無法重命名該文件夾。 WordPress 源中的多個位置的路徑是 hard-coded 。
無論如何,安全隱患並不是真正的安全。
第三種解決方案
如果您想保持 subscriber-level 用户看不到 wp-admin 目錄,您可以在自己的目錄中創建登錄/註冊和配置文件/編輯頁面的獨立版本。然後,您可以通過 htaccess 或 IP 限制來保護您的管理文件夾。 (雖然如果你這樣做,你應該為 admin-ajax 文件做一個例外,因為一些插件使用它來添加 AJAX 功能) 。
這種方法為您提供了所需的”obscurity”(這並不太多,但往往使客户和管理者感覺更好),並通過限制對管理員的訪問來增加一些真正的安全性。另外,老實説,一個剛剛説”/login” 的網址比”wp-login.php” 好多了。
應該不用説,這不會使你的網站防彈。但這是一個很好的,基本的增強。
第四種方案
WordPress 正式支持的方法是將 WordPress 安裝文件移動到 sub-directory 中,同時將站點保留在根目錄中,如下所示:
網址:http://my-blog.com
管理員網址:http://my-blog.com/7nxnkkugrdzm/wp-admin
雖然這並不能讓您完全自由地更改您的管理員網址,但這意味着您可以使用任何您喜歡的內容。從安全角度來看,這是一樣好的。它還具有將所有 WordPress 安裝文件移動到用户未知的位置的好處,因此它應該是任何 wordpress 強化策略的一部分。
從 WordPress 食典:Giving WordPress Its Own Directory
另外請注意,雖然這種安全方案被稱為 Obscure URL,但它與安全性並不一樣。晦澀的 URL 是一個完全有效的安全性方案,與密碼一樣好,而安全隱患依賴於使用秘密未經證實的程序。
同樣的注意事項也適用於密碼:調用自定義文件夾,如 7nxnkkugrdzm,而不是 happy-snappy-admin 。此外,請確保您的用户知道管理員網址是一個秘密。
第五種方案
人們一直在問這個問題,但是人們把它標記為重複。然而,選擇的答案真的不是問題的答案。
要重命名 wordpress 管理員,您需要採取兩個步驟。
在以下代碼中,我使用儀錶板作為我的新 wp-admin 的名稱。將代碼中的儀錶板更改為您想要命名新管理員的任何內容。
首先你需要告訴 wordpress 你想改變管理員的 URL 。
在線 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 找不到或類似的東西。
其次,在您的 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 文件夾。 (記住將儀錶板的每個實例更改為您首選的管理員網址)
<?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' );
}
}
}
第六種方案
這裏有一個非常好的教程:
How to Hide WordPress Info from Your Source Code mirror
Includes how to rename wp-content, rename wp-admin, and remove the generator tag from WordPress.
This tutorial will change obvious evidence or indications of it in your source-code, effectively removing WordPress info from your site.
它解釋瞭如何更改文件夾名稱,wp-admin 登錄 URL,並確保 login.php 重定向到主站點,以便人們可以直接去那裏。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。