出于安全原因,我试图通过重写链接来限制非管理员用户访问我的 wordpress 站点管理员和登录面板,例如,如果用户键入http://www.mysite.com/wp-login.php或http: //www.mysite.com/wp-admin他被重定向到错误 404 页面,但如果他键入http://www.mysite.com/blah-login或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 插件的永久链接重写功能,它就像一个魅力,但这个插件与我的主题不兼容。
那么我的问题真的有解决方案吗?