我已成功使wp admin无法访问(重定向到404页),以下是我的函数文件中的代码:
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);
}
function redirect_wp_admin(){
$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\' );
}
}
}
以及htaccess:
RewriteRule ^controlpanel/(.*) wp-admin/$1?%{QUERY_STRING} [L]
现在令人困惑的是,我不知道如何为wp登录做同样的事情。php。从“wp login.php”更改为“access”是可行的,但当wp登录时。php类型,仍然可以访问
下面是函数文件中的代码:
add_filter(\'site_url\', \'wplogin_filter\', 10, 3);
function wplogin_filter( $url, $path, $orig_scheme )
{
$old = array( "/(wp-login\\.php)/");
$new = array( "access");
return preg_replace( $old, $new, $url, 1);
}
htaccess文件:
RewriteRule ^access$ wp-login.php
所以,我的问题是如何让wp登录。php不可访问(重定向到404页或任何内容)?
非常感谢您的回答:)
提前非常感谢
SO网友:cybmeta
而不是过滤site_url 您应该进行筛选adim_url 和login_url
add_filter(\'admin_url\', \'new_admin_url\');
function new_admin_url()
{
// Insert the new URL here:
return get_bloginfo(\'url\').\'/controlpanel/\';
}
add_filter( \'login_url\', \'new_login_url\', 10, 2 );
function new_login_url( $login_url, $redirect ) {
return get_bloginfo(\'url\').\'/access/\';
}
并结合中的重写规则和重定向。htaccess。例如,对于wp登录。php(我不是mod\\u重写专家,因此很可能下一个代码不起作用或需要一些修改):
// Internal Rewrite from access to wp-login
RewriteRule ^access(.*)$ wp-login.php$1 [NC,L]
// Real redirection from wp-login to access appending the query string
RewriteCond %{REQUEST_URI} ^wp-login.*
RewriteRule ^ access$ [R=301,NC,QSA,L]