WordPress躲藏办理路径,保护网站安全

之前咱们引见过如何将WordPress设备到子目录并提到过WP Super Cache的CDN面板下Off-site URL选项可以设置URL重写,假设咱们的网站并非设备在网站根目录而是设备在子目录,这个URL重写也可以帮忙咱们有效躲藏WordPress设备目录的文件夹名,避免某些闲得无聊的人通过查看源代码知道网站文件的方位,从而对咱们的网站中止暴力破解。

固然重写后的URL躲藏了咱们网站文件的途径,可是这种躲藏办法关于访客直接通过“域名+wp-admin”的办法直接拜访WordPress默许登录窗口是无效的,比方说:我将WordPress的一切程序放在了网站根目录下的一个名为wordpress的文件夹下,假设我仅仅运用了WP Super Cache的CDN功用重写了资源的URL,当我拜访“blog.quietguoguo.com/wp-admin”时,网页会主动跳转到“blog.quietguoguo.com/wordpress/wp-admin”下,这样WordPress的默许登录界面就会暴暴露来,而我的办理途径也会暴暴露来,这样无疑是不平安的,那么该如何躲藏网站的办理途径呢?下面就将我从网上收集并整理的办法共享给咱们。

修正wp-config.php文件

首先,在更改WordPress办理途径之前咱们需求先想出一个新的途径称谓用来交换“/wp-admin/”,比方我这里运用的“/My-admin/”;然后咱们需求在WordPress的配置文件wp-config.php中添加一些常量,具体代码如下:

//WordPress躲藏办理途径
define(\'WP_ADMIN_DIR\',\'My-admin\'); 
define(\'ADMIN_COOKIE_PATH\', SITECOOKIEPATH . WP_ADMIN_DIR);

更改完wp-config.php之后,咱们需求修正一下主题文件夹下的functions.php文件,由于各个主题的functions文件命名不相同,咱们可以依据自己主题选择相应的文件。在functions.php中添加一个filter,具体代码如下:

//WordPress躲藏办理途径
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);
  }

修正Rewrite规矩

修正完以上内容后咱们需求修正下网站的Rewrite规矩来将WordPress的办理途径由”/wp-admin/”重定向到咱们新的办理途径”/My-admin/”上去。

Apache用户需求在WordPress设备目录下的.htaccess文件中添加如下代码:

RewriteRule ^My-admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]

Nginx用户需求在virtual host文件中添加如下代码:

location ~* /My-admin/ {
rewrite ^/My-admin/(.*) /wp-admin/$1 last;
}

好了,假设不出不测的话,中止到这里你的网站应该就可以通过“域名+/My-admin/“来拜访WordPress默许的登陆页面从而办理网站后台了。假设你将WordPress设备到了子目录中,则拜访途径为”域名+/WordPress设备目录/My-admin/”。

留心:假设你在上面Rewrite规矩中自定义的途径名“My-admin”后边添加了“/”则拜访时必需带上“/”;假设“My-admin”后没有带上“/”,则拜访“My-admin”与“My-admin/”是相同的。并且有一个小问题是假设你拜访的途径后边没有“/”当你进入后台选择其他选项时会报错,而假设My-admin后边有“/”时不会报错。

这个问标题前我还没想到好的办法处理,姑且留下日后补充吧。

重定向wp-admin

修正完上述内容后咱们可以通过新的拜访途径办理后台,可是你会发现原有的wp-admin途径照常起作用,这显然不是咱们所希望的,下面咱们就通过代码来将默许的办理途径重定向到一个其他的页面。值得留心的是,这次咱们需求将代码添加到咱们所运用主题的functions.php中去。

add_action(\'login_form\',\'redirect_wp_admin\');
    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.html\' );
            }
        }
    }

当然,这里你可以把重定向的“404.html”换成其它静态文件。这个404.html的文件应当是放在你WordPress的设备文件夹下的。

好了,具体的内容就这些。