htaccess没有做我想让它做的事情


htaccess isn't doing what I wanted it to do

#### ADMINISTRATION PANEL ####
RewriteRule ^administration/main administration/index.php [L]                                       ## Administration - Main
RewriteRule ^administration/members/list administration/members.php?list=view [L]                   ## Administration - User List
RewriteRule ^administration/members/reports administration/members.php?reports=view [L]             ## Administration - User Reports
RewriteRule ^administration/members/banned administration/members.php?banned=view [L]               ## Administration - User Banned
RewriteRule ^administration/members/list/page([^/]*)$ administration/members.php?list=view&page=$1 [L]          ## Administration - User List - Pagination
RewriteRule ^administration/members/reports/page([^/]*)$ administration/members.php?reports=view&page=$1 [L]    ## Administration - User Reports  - Pagination
RewriteRule ^administration/members/banned/page([^/]*)$ administration/members.php?banned=view&page=$1 [L]      ## Administration - User Banned  - Pagination

如果我使用直接链接"administration/members.php?list=view&page34它工作.....但不,不是htaccess重写,全是废话。帮我个忙吗?

关于重写规则,您必须记住的是它们是正则表达式匹配器。你的问题是这个模式

^administration/members/list

将匹配这个URL

http://example.com/administration/members/list/page34

^administration/members/list/page([^/]*)$

我建议你在你的第一组模式上放一个EOL锚($),如果这是他们实际匹配的,例如

RewriteRule ^administration/main$ administration/index.php [L]
RewriteRule ^administration/members/list$ administration/members.php?list=view [L]
RewriteRule ^administration/members/reports$ administration/members.php?reports=view [L]
RewriteRule ^administration/members/banned$ administration/members.php?banned=view [L] 

我还建议您使用QSA标志,以免丢失任何额外的查询字符串信息。

更新一个更好的主意是将第一组规则与它们的等效规则结合起来。例如
RewriteRule ^administration/members/list(/page('d+))? administration/members.php?list=view&page=$2 [L,QSA]

这将结束像这样…

administration/members/list        => administration/members.php?list=view&page=
administration/members/list/page34 => administration/members.php?list=view&page=34