我改变了我的Wordpress目录结构。这就是我所拥有的:
define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']);
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/content');
所以我有一个内容目录,其中包含我的插件和主题。然后我有一个 wordpress 目录,其中包含核心WP文件,减去wp-content文件夹。
使用这个新结构,我必须使用以下URL访问WP后端:http://site.dev/wordpress/wp-admin
有没有办法可以更改它,所以我可以像这样访问它:http://site.dev/wp-admin
我不希望wordpress出现在网址中。这是我需要做的htaccess更新,还是我可以在我的wp-config.php文件中使用的设置?
答案 0 :(得分:15)
以下是wordpress网站上的一篇文章。
http://wordpress.org/support/topic/how-to-change-the-admin-url-or-wp-admin-to-secure-login
将常量添加到wp-config.php
define('WP_ADMIN_DIR', 'secret-folder');
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
将以下过滤器添加到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);
}
将以下行添加到.htaccess文件
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]
答案 1 :(得分:3)
我玩这个并且有一个更简单的方法可以在下面这个简单的功能中完成所有操作,而不必用其他任何东西(创建不必要的文件夹,重定向,页面等)。
// Simple Query String Login page protection
function example_simple_query_string_protection_for_login_page() {
$QS = '?mySecretString=foobar';
$theRequest = 'http://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING'];
// these are for testing
// echo $theRequest . '<br>';
// echo site_url('/wp-login.php').$QS.'<br>';
if ( site_url('/wp-login.php').$QS == $theRequest ) {
echo 'Query string matches';
} else {
header( 'Location: http://' . $_SERVER['SERVER_NAME'] . '/' );
}
}
add_action('login_head', 'example_simple_query_string_protection_for_login_page');
答案 2 :(得分:2)
这是非常有用的主题。我在函数中做了一些修正,这是我的版本:
add_filter('site_url', 'wpadmin_filter', 10, 3);
function wpadmin_filter( $url, $path, $orig_scheme ) {
$request_url = $_SERVER['REQUEST_URI'];
$check_wp_admin = stristr($request_url, 'wp-admin');
if($check_wp_admin){
wp_redirect( home_url( '404' ), 302 );
exit();
}
$old = array( "/(wp-admin)/");
$admin_dir = WP_ADMIN_DIR;
$new = array($admin_dir);
return preg_replace( $old, $new, $url, 1);
}
主要用于重定向wp-admin
。
最重要的部分:
add_rewrite_rule( '^' . 'backend/(.*)','wp-admin/$1?%{QUERY_STRING}' );
更新.htaccess
规则。
答案 3 :(得分:1)
我所做的就是将source [file]
文件夹(/wp-admin
内部)移动到public_html/wordpress
中,然后我仔细检查以确保它可以通过重命名我的WordPress文件夹来工作(我使用过{ {1}},你可以使用任何东西)并访问我的网站
public_html
- 它就像我去wordpress_test
一样工作。
唯一非常棘手的事情是将example.com/wp-admin
更改为其他内容,因为WP已在多个文件中编码example.com/wordpress/wp-admin
。只是简单地更改名称会导致php和其他错误。我发现的简单插件可以轻松解决这个问题。
注意:我没有做任何编码来执行此操作。我不得不更改wp-admin
的一些代码,因为插件没有按我想要的那样做。
答案 4 :(得分:0)
还有另一种方法可以确保安全的wp-admin拥有更好的战术。
还有自己的wp-admin名称,例如:“ worksersneeded /”
我在我的一个站点上进行了操作,最终陷入奇迹,所探查的SSL站点在不同地理位置对我的站点显示不同。
您将必须下载一个名为Notepad ++的工具: https://notepad-plus-plus.org/download/
除非您要对目录中的每个文件进行大量工作。
然后,您需要将WordPress解压缩到一个文件夹中。
然后在wp-admin之后搜索时编辑目录中的所有文件。 然后,将所有文件替换为您的名字:“ workersneeded”或您自己的名字。
就像在记事本中一样,输入“搜索文件”以“找到什么”:wp-admin /
在“替换为”中:需要工作人员/
然后替换所有文件。
您还需要将此行放入wp-config.php中,以监视所有问题:
ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
在WordPress目录中大部分内容被覆盖并且您的wp-admin现在有了“ workersneeded”名称后,您很可能会在某些WordPress插件或主题上遇到轻微问题。
这就是为什么您需要将它们登录到error_log.txt文件中的原因。
在文件中找到错误之后。您很可能需要编辑.php文件,该文件仍然尝试连接到wp-admin。这样,您可以将wp-admin的文件信息替换为管理文件夹。
您可以再次下载插件,并使用notepad ++替换与上述相同的过程。这样,您就可以使用新的文件夹名称使所有插件可用。
然后使用wp文件管理器插件将每个插件的文件夹上传到您的wp-content目录。
请注意,即使重新安装WordPress,也无法自动更新或更新WordPress。您每次都必须进行这些替换。
这是通过WordPress的4.9.8版本以及最新的5.0.3完成的
在5.0.3中,您会在error_log.txt文件中得到更多错误。不知道为什么。
答案 5 :(得分:0)
最后找到了一种无需插件 并且无需修改WP CORE 的方法(出于某些奇怪的原因,所有教程都建议这样做)。
1-复制wp-login.php
并将其重命名为new-secret-url.php
(在您的根目录上)
2-打开new-secret-url.php
文件并执行wp-login.php
到new-secret-url.php
的搜索/替换
3-将以下代码添加到您的functions.php中:
/** Hide default login */
add_action( 'init', 'marounmelhem_hide_login' );
function marounmelhem_hide_login() {
//Only proceed for guests
if ( ! is_user_logged_in() ) {
//Getting current page
$current_url = str_replace( '/', '', $_SERVER['REQUEST_URI'] );
$hiddenWpAdmin = 'new-secret-url';
$redirectNaTo = '/';
//Checking if accessing correct login url
if ( $current_url == $hiddenWpAdmin ) {
wp_redirect( '/'.$hiddenWpAdmin.'.php' );
exit;
}
//Only allow requests to wp-login.php coming from correct login url
$adminToCheck = [
'wp-admin',
'wp-login.php'
];
if (
in_array( $current_url, $adminToCheck )
&&
$_GET['action'] !== "logout"
) {
wp_redirect( $redirectNaTo );
exit();
}
}
}
4-仅当您不使用任何其他前端登录表单时,此方法才有效,如果您使用,则可以更改:
is_user_logged_in()
到可能的!current_user_can( 'subscriber' )
(或前端登录逻辑中指定的角色)
5-不确定ajax调用是否适用于上述方法,如果您尝试过,请告诉我