如何设置环境变量,然后重定向当前目录,以允许通用代码

How to set environment variable, then redirect current directory, to allow common code

我正在尝试对一个旧网站进行现代化改造,该网站具有对应于三组不同用户的三个部分:每个人的 public 部分、登录用户的成员部分和管理员的管理部分.我 运行 为成员和管理员使用一个登录脚本遇到了麻烦。

我的目录结构目前是这样的:

/mysite <- for everyone
/mysite/member
/mysite/admin
/mysite/common/login

为了登录,我安装了 Panique (https://github.com/panique/huge) 的 HUGE 用户身份验证脚本。 HUGE 使用名为 config.{environment variable}.php.

的文件设置配置变量

数据库有两个不同的用户 tables-- 一个 "members" table 具有用户信息,另一个 "admins" table 用于管理员。我想保留此 table 结构,因为我不想编辑数百个文件来反映更改。

如果我在 /mysite 中编辑 .htaccess,我可以设置环境变量,然后将 /mysite/member 上的点击重定向到 /mysite/common/login,如下所示(我使用 302 因为我还在搞乱左右):

 SetEnv APPLICATION_ENV admin
 RewriteRule ^admin common/login/public [R=302,NC,L] 

到目前为止一切正常。它设置环境变量,跳转到 /mysite/common/login/public,然后巨大的负载 config.admin.php。然后我可以在 config.admin.php 中设置用户 table 和路径变量。我可以登录,但还没有访问管理员中的文件。

现在,我不知道如何为管理员和成员设置环境变量。除其他外,我尝试创建以下 .htaccess 文件,但它们没有用。 在 /mysite/admin:

SetEnv APPLICATION_ENV admin
RewriteEngine On
RewriteRule * common/login/public [R=302,NC,L]

在/mysite/member中:

 SetEnv APPLICATION_ENV member
 RewriteEngine On
 RewriteRule * common/login/public [R=302,NC,L]

我知道我的 RewriteRule 语法至少是错误的,但执行这些重定向也可能是错误的。登录后我能否访问管理员和会员中的文件,还是他们会继续重写 common/login/public?

P.S。我愿意接受以更简单的方式完成工作的替代方案。 完成工作的快速而肮脏的方法是复制登录脚本,这样每个部分都有自己的副本。但我想避免这种情况。

将以下内容放入/mysite目录下.htaccess

RewriteEngine On
RewriteRule ^(admin|member) common/login/public [E=APPLICATION_ENV:,R=302,NC,L]

其中 E 标志将环境变量 APPLICATION_ENV 设置为存储在 </code> 中的值,可以是 <code>adminmember