.htaccess文件url重写一直转到错误页面
我正试图让以下网址的工作 www.urlname.com/team/1-Test www.urlname.com/team/1-Test/members.htaccess文件url重写一直转到错误页面,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正试图让以下网址的工作 www.urlname.com/team/1-Test www.urlname.com/team/1-Test/members RewriteRule ^team/([^-]+)-([^&]+)$ index.php?p=teamprofile&team_name=$2&team_id=$1 RewriteRule ^team/([^-]+)-([^&]+)/members$ index.php?p=teammembers&te
RewriteRule ^team/([^-]+)-([^&]+)$ index.php?p=teamprofile&team_name=$2&team_id=$1
RewriteRule ^team/([^-]+)-([^&]+)/members$ index.php?p=teammembers&team_name=$1&team_id=$2
但是当我尝试使用/members init链接时,它会转到另一个页面吗
有人能帮我吗
谢谢问题是,你的第二条规则被第一条规则所满足。您可以简单地切换它们,它将起作用:
RewriteEngine On
RewriteRule ^team/([^-]+)-([^&]+)/members$ index.php?p=teammembers&team_name=$1&team_id=$2
RewriteRule ^team/([^-]+)-([^&]+)$ index.php?p=teamprofile&team_name=$2&team_id=$1
尽管如此,对第一条规则稍作修改也可以解决这个问题:
RewriteEngine On
RewriteRule ^team/([^-]+)-([^/]+)[/]?$ index.php?p=teamprofile&team_name=$1&team_id=$2 [L]
RewriteRule ^team/([^-]+)-([^/]+)/members[/]?$ index.php?p=teammembers&team_name=$1&team_id=$2 [L]
注意,我将第一条规则中的匹配字符串从([^&]+)
更改为([^/]+)
——这样在mydomain.com/team/1-2/
等情况下,正斜杠就不会包含在匹配中。结尾的[/]?
规则是尾部正斜杠的可选匹配项。我同样在成员规则的末尾添加了一个,现在它的工作原理如下:
mydomain.com/team/1-2/
-进入index.php?p=teamprofile&team\u name=1&team\u id=2
mydomain.com/team/1-2
-进入index.php?p=teamprofile&team\u name=1&team\u id=2
mydomain.com/team/1-2/members
-进入index.php?p=teammembers&team\u name=1&team\u id=2
mydomain.com/team/1-2/members/
-进入index.php?p=teammembers&team\u name=1&team\u id=2
[^-]
和[^&]
包含//code>所以/members包含在其中。您可以将/
添加到否定字符组中,如[^-/]
和[^&/]
以使其不匹配/
,或者将底部的字符组向上移动并在其后面添加[L]
,以告诉apache这是检查其是否匹配的[L]最后一条规则