Проблема в том, что ваше второе правило удовлетворяется первым правилом.Вы можете просто переключать их, и это будет работать:
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_name=1&team_id=2
mydomain.com/team/1-2
- переходит к index.php?p=teamprofile&team_name=1&team_id=2
mydomain.com/team/1-2/members
-переходит к index.php?p=teammembers&team_name=1&team_id=2
mydomain.com/team/1-2/members/
- переходит к index.php?p=teammembers&team_name=1&team_id=2