在我的网站上,我有三种类型的用户,比方说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/K1
等等,而不使用A
B
等之间。现在为了防止文件的清晰,我无法将所有文件混合在一起,因此需要将它们保持在与上述相同的目录配置中。那该怎么办?怎么办?
mod_rewrite有助于创建虚拟目录,但在这种情况下它无济于事,因为我们需要PHP会话变量n数据库查询来选择如何显示,以及用户可以访问的内容。
我可能不太清楚,所以请在理解问题时询问您遇到的任何问题。 感谢。
答案 0 :(得分: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;