我正在使用PHP的自定义(基本)CMS系统的网站上工作。 CMS系统位于admin.php下,站点的其余部分位于index.php。
下//关于问题的更多背景的项目说明(跳到下一个实际问题的评论)//
index.php和admin.php都接受GET变量来控制页面的内容。 admin.php接受3个不同的GET变量(a,b和c),它们定义了不同的功能。
" A"用于主要功能,如"页面 - 不同页面的内容","新闻 - 基本博客系统"等
" B"是专门用于"页面的子链接"用于定义管理员用户正在修改的页面的功能。
" C"也适用于"页面"功能并定义管理员用户正在修改的子页面。
然后是index.php,它是"客户端"该项目包含两个获取变量(A和B)
" A"是用户正在访问的页面,在数据库中定义。
" B"作为用户访问的子页面, - // - 。
//项目扩展结束//
所以我一直试图在htaccess中使用Rewrite将URL重写为更加用户友好的字符串。
(admin.php的) 示例:admin.php?a = pages& b = home => /管理/页/家庭
(的index.php) 示例:index.php?a = about& b = 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文档和几个问题,但是已经找到了可靠的解决方案。
如何根据用户访问管理页面或主(索引)页面重写网址?
谢谢!
答案 0 :(得分:1)
您可以使用:
RewriteEngine On
# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# rewrite admin/
RewriteRule ^admin/?$ admin.php [QSA,NC,L]
RewriteRule ^admin/([^/]+)/?$ admin.php?a=$1 [QSA,NC,L]
RewriteRule ^admin/([^/]+)/([^/]+)/?$ admin.php?a=$1&b=$2 [QSA,NC,L]
RewriteRule ^admin/([^/]+)/([^/]+)/([^/]+)/?$ admin.php?a=$1&b=$2&c=$3 [QSA,NC,L]
# rewrite others
RewriteRule ^([^/]+)/?$ index.php?a=$1 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?a=$1&b=$2 [QSA,L]