在没有.htaccess的情况下更改wp登录URL

时间:2013-01-04 作者:Hasan

如何在不使用的情况下更改wordpress登录url。htaccess应该是一个手动过程,所以example.com/login 不会重定向到example.com/wp-login.php 所以example.com/login 将是登录页?

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

几周前我写了一篇关于它的帖子WordPress Easy Login URL without htaccess,但如果您不想阅读,那么以下是插件形式的代码:

<?php
/*
Plugin Name: Nice Login URL
Plugin URI: http://en.bainternet.info
Description: Simple plugin to redirect login/register to a nice url
Version: 1.0
Author: bainternet
Author URI: http://en.bainternet.info
*/

// Add rewrite rule and flush on plugin activation
register_activation_hook( __FILE__, \'NLURL_activate\' );
function NLURL_activate() {
    NLURL_rewrite();
    flush_rewrite_rules();
}

// Flush on plugin deactivation
register_deactivation_hook( __FILE__, \'NLURL_deactivate\' );
function NLURL_deactivate() {
    flush_rewrite_rules();
}

// Create new rewrite rule
add_action( \'init\', \'NLURL_rewrite\' );
function NLURL_rewrite() {
    add_rewrite_rule( \'login/?$\', \'wp-login.php\', \'top\' );
    add_rewrite_rule( \'register/?$\', \'wp-login.php?action=register\', \'top\' );
    add_rewrite_rule( \'forgot/?$\', \'wp-login.php?action=lostpassword\', \'top\' );
}


//register url fix
add_filter(\'register\',\'fix_register_url\');
function fix_register_url($link){
    return str_replace(site_url(\'wp-login.php?action=register\', \'login\'),site_url(\'register\', \'login\'),$link);
}

//login url fix
add_filter(\'login_url\',\'fix_login_url\');
function fix_login_url($link){
    return str_replace(site_url(\'wp-login.php\', \'login\'),site_url(\'login\', \'login\'),$link);
}

//forgot password url fix
add_filter(\'lostpassword_url\',\'fix_lostpass_url\');
function fix_lostpass_url($link){
    return str_replace(\'?action=lostpassword\',\'\',str_replace(network_site_url(\'wp-login.php\', \'login\'),site_url(\'forgot\', \'login\'),$link));
}

//Site URL hack to overwrite register url
add_filter(\'site_url\',\'fix_urls\',10,3);
function fix_urls($url, $path, $orig_scheme){
    if ($orig_scheme !== \'login\')
        return $url;
    if ($path == \'wp-login.php?action=register\')
        return site_url(\'register\', \'login\');

    return $url;
}

结束