URL Rewrite - необязательный параметр? - PullRequest
0 голосов
/ 22 марта 2011

Я хотел бы, чтобы строка регулярного выражения отражала необязательный параметр, в данном случае, географическое состояние.

Я могу выполнить это с помощью двух правил:

<rewrite url="~/(.+)-(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/>
<rewrite url="~/(.+)/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=NONE&amp;term=$2&amp;x=$4"/>

С, запросв /Los+Angeles/cars.aspx: Гео-город: Лос-Анджелес Гео-штат: НЕТ

С, запрос к /Los+Angeles-CA/cars.aspx: Гео-город: Лос-Анджелес Гео- состояние: CA

Мне интересно, есть ли способ сделать это в одном операторе перезаписи.

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Некоторое время не переставал переписывать url в конфиге, но я довольно привык к регулярным выражениям.Будет ли это работать для вас?

<rewrite url="~/([^-]+)(?:-(.+))?/(.+).aspx" to="~/Default.aspx?city=$1&amp;state=$2&amp;term=$3&amp;x=$4"/>

Государство не скажет ничего, но на самом деле должно быть пустым.

0 голосов
/ 22 марта 2011

Желаете ли вы передать пустую строку вместо NONE в параметр состояния?Если это так, ваше 1-е правило может быть переписано так:

~/(.+)-?(.+)/(.+).aspx

... и ваше 2-е правило может быть удалено.

...