Regex помощь нужна! - PullRequest
       2

Regex помощь нужна!

1 голос
/ 25 августа 2010

Я работаю над многоязычным приложением, использующим переписывание URL на основе IIS7.

Мне бы хотелось следующие действия URL:

1. fr-ca > index.aspx?l=&lc=fr-ca
2. fr-ca/ > index.aspx?l=&lc=fr-ca
3. fr-ca/568/sometitle > index.aspx?l=568&lc=fr-ca
4. 568/sometitle > > index.aspx?l=568&lc=

По сути, начальный fr-ca является необязательным.

Мое текущее правило:

<match url="^(fr-ca.)?([^/][0-9]+)?/*" />

Сбой # 1

Еще одна попытка:

<match url="^(fr-ca)?(.[0-9]+)?/*" />

Проходит все требования, кроме обратной ссылки {R: 2} дает в этом случае / 568.

Полагаю, я мог бы добавить еще одно правило, которое добавляет / только к концу fr-ca, но это не так.

Спасибо за любую помощь! Regex сводит меня с ума.

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Должны ли вы делать это таким образом? Вместо того, чтобы видеть, какой URL они нажимают (и перенаправить на то, что, как я полагаю, является переведенной версией страницы), вы могли бы на самом деле проверить заголовок Accept-Language ... возможно, даже на этой странице ASP.

Это означает, что они видят язык, на котором хотят видеть его с самого начала, и не нажимая на этот тупой маленький флажок в верхней части страницы. Он не зависит от GeoIP или взаимодействия с пользователем.

Проверьте это.

0 голосов
/ 25 августа 2010

Разобрался сам.

^(fr-ca)?/?([0-9]+)?

проходит:

fr-ca
fr-ca/
fr-ca/9
fr-ca/9/
fr-ca/9/sometitle
fr-ca/9/sometitle/
fr-ca/9/sometitle/anothertitle

9
9/
9/sometitle
9/sometitle/
9/sometitle/anothertitle
...