我正在为网站创建一个管理员后端,我希望每个管理员都有自己的个人URL到他们的管理文件夹,他们可以在注册时指定,他们输入的文件夹名称将保存在MySQL数据库。
然后我想.htaccess文件能够读取用户输入的URL,如果它在数据库的用户'admin文件夹'字段中,它将重写文件夹名称(对于这个示例,我们将会称之为“admin”),以便用户可以使用自己的数据库URL,但将其重定向到/ admin。
例如..
用户名 - 文件夹名称
richard - myhiddenfolder
然后.htaccess文件应该获取当前登录用户文件夹名称(由$_SESSION['folder_name']
设置)和加载/管理员,仍然在浏览器地址栏中显示用户文件夹名称。
修改
抱歉,我的整体问题是,如何获取会话var'folder_name'并在.htaccess文件中解析它以重写名为'admin'的文件夹。
答案 0 :(得分:1)
从技术上讲,可以使用mod_rewrite或只是普通的符号链接(如果你有权这样做)。
如果你使用mod_rewrite ,你会发现RewriteMap很方便。但是,无法在每个目录的Context(包括.htaccess文件)中声明RewriteMaps,因此您需要更改http服务器配置,这可能不是您想要的。
每次用户更改自定义文件夹名称时,您仍然可以在php脚本中更改.htaccess。然后,您将生成以下规则:
RewriteCond %{HTTP_COOKIE} (^|;|\s)custom_folder=custom/path(;|$)
RewriteRule /custom/path /admin
这需要将自定义路径设置为cookie。遗憾的是,没有办法在RewriteRule测试中引用cookie值(仅在我们想要的替代品中)。
还要确保自定义路径不会与任何真实路径冲突,因为这会破坏相应用户的网站。
对于符号链接,每次用户更改其管理文件夹名称时,都会为他创建/删除/更新符号链接。当然,您仍需要在管理脚本中检查管理员权限,因为符号链接是全局的。
独立于您选择的方法,请确保您在管理脚本中检查管理员权限。
修改强> 对于编辑过的问题,我的回复有点太早了,所以答案就是:不可能直接从.htaccess中访问php会话数据。你可以尝试使用prg: RewriteMaps。