Перезапись URL файла .htaccess продолжает идти не на ту страницу - PullRequest
0 голосов
/ 08 декабря 2011

Я пытаюсь заставить работать следующие URL

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, она переходит на другую страницу?

Может кто-нибудь мне помочь, пожалуйста

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

[^-] и [^&] включает /, поэтому / члены включены с этим. Вы можете либо добавить / к своим группам символов отрицания, таким как [^-/] и [^&/], чтобы они не соответствовали /, либо переместить нижнюю и добавить [L] после нее, чтобы сообщить apache, что это [L ] как правило проверить, соответствует ли оно.

0 голосов
/ 08 декабря 2011

Проблема в том, что ваше второе правило удовлетворяется первым правилом.Вы можете просто переключать их, и это будет работать:

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

...