Как записать правило перезаписи в файл htaccess - PullRequest
0 голосов
/ 14 мая 2010

У меня проблема с правилом перезаписи

моя ссылка это www.something / group / group_id / place / groupName за это rewriteBase /

RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L]

иногда мой URL может приходить www.something / group / group_id / groupName.

В обоих случаях мне нужно переписать в group.php и мне нужен только groupid. Как написать правило перезаписи для работы в обеих ситуациях?

Ответы [ 2 ]

0 голосов
/ 14 мая 2010

Либо используйте ленивые квантификаторы, либо не позволяйте каждой совпадающей группе соответствовать самому /. Как у вас сейчас, первая группа будет соответствовать столько, сколько может, что приведет к нежелательным результатам.

RewriteRule ^group/(.*?)/(.*?)/(.*?)$ /group.php?gid=$1 [QSA,NC,L]
RewriteRule ^group/([^\/]*)/([^\/]*)/([^\/]*)$ /group.php?gid=$1 [QSA,NC,L]

Еще лучший способ, позволяющий людям пропускать ненужные части (читай: не нужно оценивать результат на стороне сервера), вы могли бы даже сделать примерно так:

 RewriteRule ^group/(\d+)(/.*)?$ /group.php?gid=$1 [QSA,NC,L]

(это основано на предположении, что идентификатором вашей группы является число)

0 голосов
/ 14 мая 2010

Попробуйте это:

^group/(.+)(/|/.+)*$

Это соответствует
www.something / группа / group_id / место / Groupname
www.something / группа / group_id / Groupname

Я никогда не использовал RewriteRule, поэтому он не тестировался. А может быть, если вы добавите тег «Regex» к своему вопросу, вы получите больше ответов; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...