0

在我的网站中,我有三种类型的用户,比如说 A、B 和 C。他们访问的网页大多不同,但仍然很少有重叠。我制作的目录如下。喜欢。

Root
    A
        A1
        A2
        A3
        K1
        K2
    B
        B1
        B2
        K1
    C
        C1
        C2
        C3
        K1
        K2

所以这里的文件 K1 和 K2 有共同的名字,虽然不是相似的内容。A类用户登录时可以浏览domain.com/A/A1/ domain.com/A/K2/等。B类用户可以浏览domain.com/B/B1等等。

我想要的是,当 A 类用户登录时,他浏览domain.com/A1/ domain.com/K1etc.A B等等,中间不使用 etc。现在为了防止文件清晰,我无法将所有文件混合在一起,因此需要将它们保存在与上述相同的目录配置中。那么怎么办呢?该怎么办?

mod_rewrite 有助于创建虚拟目录,但在这种情况下它不会有帮助,因为我们需要 PHP 会话变量和数据库查询来选择如何显示,以及让用户可以访问的所有内容。

我可能不太清楚,所以请在理解问题的同时询问您遇到的任何问题。谢谢。

4

1 回答 1

1

您必须做两件事:获取请求的 URI,获取用户类型。然后您将知道要服务的目录。htaccess 和 mod_rewrite 不足以做第二件事,因为它无法访问数据库。

您可以做的是使用以下命令将所有内容路由到某种 php 控制器中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /user_type.php?request=$1 [L]

然后user_type.php会从request $_GET变量中知道第一件事,然后它可以通过获取用户类型来做第二件事,然后根据用户类型返回请求。就像是:

$file_to_serve = $_GET['request'];

if($user_type == 'A')
    $file_to_serve = 'A/' . $file_to_serve;
于 2013-09-05T19:27:54.090 回答