填写您的邮件地址,订阅我们的精彩内容:

为你的wordpress更换/login的友好登陆地址

751

本文假定你使用.htaccess并成功开启了固定链接功能。

通过我们自己对主题程序和.htaccess文件的修改,我们可以放弃原来wp-login.php的登陆、注册地址了,这看起来是很酷的,通过自己慢慢研究,把自己的wordpress伪装的很好,一般访客根本不知道你的网站是用wordpress,甚至不知道你的网站是用php的程序来搭建的,好了,开始我们的修改之旅。

第一步:将下面代码添加到你的主题文件functions.php中

<?php if (! defined(‘ABSPATH’)) exit;
/**
* 本文件用来路由登录页面wp-login.php到/login
* 你需要在.htaccess文件做如下修改,记住,必须是紧接着的修改
* RewriteBase /
* RewriteRule ^login$ wp-login.php
*/

add_filter(‘site_url’,’login_url’);
function login_url($url)
{
$old? = array( “/(wp-login.php)/”);
$new? = array( “login”);
return preg_replace( $old, $new, $url, 1);
}

我使用了特殊的方法,让主题能自动识别我写的函数文件,因而我自己用了一个单独的文件,对于你根本不用理会,你只需要将上面的可用代码部分拷贝到你的functions.php文件中。

上面的代码实现了将网站中的site_url对应的hook进行修饰,用一个login_url()对网站的网址进行修改,用login替换掉网址中的wp-login.php。你要明白的是add_filter()的方法让你的网站中所有通过wordpress内核函数打印出来的网址发生了变化,例如当你使用<a href=”<?php echo wp_login_url(); ?>”>登录</a>时,原来出现的html是<a href=”http://localhost/wp-login.php”>登陆</a>而现在它变成了<a href=”http://localhost/login”>登陆</a>。

工作并没有结束,现在你点击网页中的登陆或注册链接时,进入了一个404错误页面,不信,你试试!

第二步:修改.htaccess增加重新规则

更新:在《使用add_rewrite_rule()为wordpress增加路由地址》一文中,笔者已经实现了不用修改.htacceess就可以路由。

在RewriteBase /后面紧接着加一句

RewriteRule ^login$ wp-login.php

注意:1、一定要紧接着写,我曾测试写到最后,没有成功;2、无论你的RewriteBase是根目录还是子目录,你都不用考虑,直接复制上面代码即可。

如上工作之后,你的/login就可以工作了,不过你不要太高兴,因为现在你访问wp-login.php还是可以访问并给出界面的,你所要做的就是将它修改为404页面,以欺骗访客,如何修改我将在以后的文中提及,你可以选择重写定向到404,修改那个文件,用wp提供的一些挂钩函数阻断登陆页面显示404模板都是可以的。

好了,文章到此结束,我一直探求不修改.htaccess的方法,然而一直未实现,因为我知道插件lockdown-wp-admin是可以实现这个效果的,如果你有对应的办法,请告诉我。

下面我简单说几句