【发布时间】:2025-12-03 22:20:19
【问题描述】:
我正在使用 PHP 开发具有自定义(基本)CMS 系统的网站。 CMS 系统位于 admin.php 下,站点的其余部分位于 index.php 下。
// 项目解释以获取有关问题的更多上下文(针对实际问题跳至下一条评论)//
index.php 和 admin.php 都接受 GET 变量来控制页面的内容。 admin.php 接受 3 个不同的 GET 变量(a、b 和 c),它们定义了不同的功能。
“A”用于主要功能,如“页面 - 不同页面的内容”、“新闻 - 基本博客系统”等。
“B”是专门用于“页面”功能的子链接,用于定义管理员用户正在修改的页面。
“C”也特定于“页面”功能,并定义了管理员用户正在修改的子页面。
然后作为项目“客户端”的 index.php 接受两个 get 变量(A 和 B)
“A”是用户正在访问的页面,在数据库中定义。
“B”是用户正在访问的子页面,-//-.
// 项目扩展结束 //
所以我一直在尝试在 htaccess 中使用 Rewrite 将 URL 重写为更用户友好的字符串。
(admin.php) 示例:admin.php?a=pages&b=home => /admin/pages/home
(index.php) 示例:index.php?a=about&b=team => /about/team
到目前为止,管理员重写条件运行良好。但是我想实现客户端的重写条件,它们发生了冲突。
当前 .htaccess 状态:
RewriteEngine On
RewriteRule ^admin/? admin.php [NC,L]
RewriteRule ^admin/([A-Za-z0-9-&]+)/?$ admin.php?a=$1 [NC,L]
RewriteRule ^admin/([A-Za-z0-9-&]+)/?/([A-Za-z0-9-&]+)/?$ admin.php?a=$1&b=$2 [NC,L]
RewriteRule ^admin/([A-Za-z0-9-&]+)/?/([A-Za-z0-9-&]+)/?/([A-Za-z0-9-&]+)/?$ admin.php?a=$1&b=$2&c=$3 [NC,L]
我一直在查看 htaccess 文档和堆栈上的几个问题,但未能找到可靠的解决方案。
如何根据用户访问的是管理页面还是主(索引)页面来重写 url?
谢谢!
【问题讨论】:
标签: php apache .htaccess mod-rewrite url-rewriting