如何要求wordpress登录才能查看wordpress网站中的子目录?

时间:2015-06-03 17:17:45

标签: php wordpress .htaccess login subdirectory

我的Wordpress网站位于 xroads.com

在里面,有一个名为“_warehouse”的文件夹,其中包含一个php CRUD app

是否可以要求我用于Wordpress网站的同一登录页面查看_warehouse目录?

提前致谢!

enter image description here

2 个答案:

答案 0 :(得分:0)

如果用户已在WordPress中拥有帐户

将用户重定向到登录表单。使用wp_login_url$redirect参数设置登录后的去向:

$loginUrl = wp_login_url( home_url('_warehouse') );

https://codex.wordpress.org/Function_Reference/wp_login_url

然后使用wp_login操作手动验证应用程序中的用户:

add_action('wp_login', function($username, $user) {
    // Log user into external application
}, 10, 2);

https://codex.wordpress.org/Plugin_API/Action_Reference/wp_login

实际上将用户设置为“已登录”将取决于外部应用程序的设置方式。它可以像设置会话变量一样简单,然后检查是否在仓库应用程序中设置了它。

答案 1 :(得分:-1)

这是一种可能的解决方案(使用风险自负)。

.htaccess目录中创建一个_warehouse文件,其中包含以下内容:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ wplogin.php [NC,L]

这会将_warehouse及所有子目录中存在的所有文件请求重定向到_warehouse/wplogin.php

使用以下内容创建_warehouse/wplogin.php

<?php

// Edit this path to include wp-load.php from your WordPress directory
require_once '../wp-load.php';

if (!is_user_logged_in()) {
    // if user is not logged in, set redirect URI, show WP login
    $_REQUEST['redirect_to'] = $_SERVER['REQUEST_URI'];
    require_once '../wordpress/wp-login.php';
    exit;
} else {
    // user is logged into wordpress - show the requsted file.
    require_once $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
}

最后,非常重要的是,将其添加到您的wp-config.php文件中:

define('COOKIEPATH', '/');

这是因为WordPress将使用指定的路径设置cookie。这样可以防止在_warehouse中识别登录cookie。

正如我所说,使用风险自负。它并不完美,但可能是达到你想要的最快捷的方式,并且可以处理很多案例。

注意:它不处理没有索引的目录。如果Apache Options +Indexes处于启用状态,则某人可能会在_warehouse中看到目录列表,但如果他们尝试访问目录列表,则会显示登录页面。

相关问题