出于安全原因,我试图通过重写链接来限制我的 WordPress 网站管理员和登录面板对非管理员用户的访问,这样如果用户输入http://www.mysite.com/wp-login.php http://www.mysite.com/wp-login.php or http://www.mysite.com/wp-admin http://www.mysite.com/wp-admin他被重定向到错误 404 页面,但如果他输入http://www.mysite.com/blah-login http://www.mysite.com/blah-login or http://www.mysite.com/blah-admin http://www.mysite.com/blah-admin被重定向到我的 WP 管理或登录面板。我有以下选项可以做到这一点。
- 重写我不擅长的 .htaccess 文件,并且不想弄乱我网站的 .htaccess 文件。
-
使用我通过编写一个小插件完成的 $wp_rewrite 类,其代码如下。
register_activation_hook( __FILE__, 'activate' );
function activate() {
rewrite();
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'deactivate' );
function deactivate() {
flush_rewrite_rules();
}
add_action( 'init', 'rewrite' );
function rewrite() {
add_rewrite_rule( 'blah-admin/?$', 'wp-admin', 'top' );
add_rewrite_rule( 'blah-login/?$', 'wp-login.php', 'top' );
add_rewrite_rule( 'blah-register/?$', 'wp-register.php', 'top' );
}
它工作完美,唯一的问题是它不限制对 wp-admin、wp-login.php 或 wp-registe.php 的访问(这是必须的)。
-
我可以将以下规则写入新的 .htaccess 文件。
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Wordpress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</LIMIT>
并将其放在 wp-admin 文件夹下,它有两个缺点,一是它只会限制对我的 wp-admin 文件夹的访问,而不是 wp-register.php 或 wp-login.php ,第二是我是 DHCP 客户端,所以allow from xxx.xxx.xxx.xxx
对我不起作用。
我可以使用第二条和第三条规则的组合,但它肯定行不通,因为我无法为整个被阻止的文件夹提供替代的永久链接。
至于最后的手段,我可以使用 wp-modal 插件的永久链接重写功能,它的工作方式就像一个魅力,但这个插件与我的主题不兼容。
那么我的问题真的有解决办法吗?
我使用此代码片段将人们从后端重定向(如果他们尚未登录)。您可以修改它以指向您的 404:
// BLOCK BACKEND ACCESS FOR NON-ADMINS
add_action( 'init', 'blockusers_init' );
function blockusers_init() {
// If accessing the admin panel and not an admin
if ( is_admin() && !current_user_can('level_10') ) {
// Redirect to the homepage
wp_redirect( home_url() );
exit;
}
}
只需更改 URLhome_url()
函数到你的404页面下wp_redirect
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)