如何设置环境变量,然后重定向当前目录,以允许通用代码
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>admin
或 member
。
我正在尝试对一个旧网站进行现代化改造,该网站具有对应于三组不同用户的三个部分:每个人的 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>admin
或 member
。