Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess文件url重写一直转到错误页面_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess文件url重写一直转到错误页面

.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

我正试图让以下网址的工作

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&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]最后一条规则