Php 相同。htaccess规则不';行不通

Php 相同。htaccess规则不';行不通,php,.htaccess,Php,.htaccess,我想重写两个页面的url,如下所示: 原件: 期望的: 我试过这个规则 RewriteRule ^([^/]*)$ /team.php?PAGE=profile&LINK=$1 [L] RewriteRule ^([^/]*)$ /course.php?PAGE=view&LINK=$1 [L] 我不知道为什么只有第一页被正确重写,第二页也被重写为第一页 另外,我的index.php被重定向到team.php 谢谢大家! 依次查看每个规则,直到找到匹配的规则 以h

我想重写两个页面的url,如下所示:

原件:

期望的:

我试过这个规则

 RewriteRule ^([^/]*)$ /team.php?PAGE=profile&LINK=$1 [L]

 RewriteRule ^([^/]*)$ /course.php?PAGE=view&LINK=$1 [L]
我不知道为什么只有第一页被正确重写,第二页也被重写为第一页

另外,我的index.php被重定向到team.php

谢谢大家!

依次查看每个规则,直到找到匹配的规则

http://example.com/jenifer
,其中对
jenifer
的请求与第一个规则模式
^([^/]*)$
匹配。看看
http://example.com/dance
,这里的
舞蹈
与第一个规则模式
^([^/]*)$
匹配。第二条规则从未尝试过,因为第一条规则已经接受了每个请求

当您有一个与模式
^([^/]*)$
匹配的请求时,Apache将始终在第一个
重写规则时停止,因为这是第一个匹配的请求


如果你想区分团队成员和课程,你还必须有不同的模式来匹配,正如@anubhava在评论中已经建议的那样,例如

RewriteRule ^team/([^/]*)$ /team.php?PAGE=profile&LINK=$1 [L]
RewriteRule ^course/([^/]*)$ /course.php?PAGE=view&LINK=$1 [L]

现在,当您收到
http://example.com/team/jenifer
http://example.com/course/dance
,Apache能够选择正确的规则,因为请求中有领先的
团队
课程

不起作用。漂亮的URL方案也应该有一些php处理程序的标识符。类似于
http://example.com/team/jenifer
http://example.com/course/dance
会更好。如果我删除第二条规则,即使第一页有效?因为它是有效的。只需将单个规则保持为
RewriteRule^([\w-]+)/?$/team.php?PAGE=profile&LINK=$1[L,QSA]
就可以了,但它不能同时适用于这两个规则,因为模式是相同的。您的第一个规则是“匹配子文件夹中没有的任何内容,并重写到team.php页面,然后不处理任何规则。”因为两个重写规则具有相同的模式匹配,所以第二个规则永远不会被命中。