2010-08-25 2 views
1

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

Я хотел следующие действия 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-ча является необязательным.

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

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

Сбой на # 1

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

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

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

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

Спасибо за помощь! Реджикс заводит меня в бешенство.

ответ

0

Отсортировано самостоятельно.

^(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 
1

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

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

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

+0

У вас есть ответ на мой вопрос? – ScottE

Смежные вопросы