2012-02-22 2 views
1

Я запускаю несколько сайтов на основе шаблонов, используя web.config для IIS, чтобы преобразовать domain.com/somepage в domain.com/default.asp?page=somepage, чтобы включить правильный файлы из каталога более высокого уровня. Правило я использую выглядит следующим образом:Сопоставьте все символы и переадресовывайте, если строка не содержит

<rule name="friendly-urls"> 
    <match url="^[a-zA-Z0-9_]+" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="default.asp?page={R:0}" /> 
</rule> 

Проблема в том, что каждый веб-сайт также имеет мобильную версию, доступны на domain.com/m/, и способ перенаправления устанавливается прямо сейчас, этот адрес перенаправлялся бы на domain.com/default.asp?page=m Как-то мне нужно сделать исключение для чего-либо в каталоге m /, но я не понимаю регулярных выражений или web.config достаточно хорошо, чтобы выполнить это. Я был бы очень благодарен, если бы кто-нибудь мог помочь.

ответ

0

Я не знаком с правилами web.config, но, возможно, это будет работать, или, по крайней мере, чтобы вы начали:

<rule name="friendly-urls"> 
    <match url="^([a-zA-Z0-9_]+/)?([a-zA-Z0-9_]+)$" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="{R:1}default.asp?page={R:2}" /> 
</rule> 

Новый Regex делит входную URL в необязательный первый матч (который включает в себя передняя косая черта) и требуемое второе совпадение. Мы хотим добавить первое совпадение к выходному URL. Если первое совпадение (для немобильных URL-адресов) отсутствует, оно должно содержать пустую строку. Второе совпадение затем добавляется к выходному URL как обычно.

Учитывая "somepage", она должна производить "Default.asp? Страница = somepage"

Учитывая "м/somepage", она должна производить "м/default.asp? Страница = somepage"

Я не могу проверить ничего, кроме Regex, но я надеюсь, что это поможет!

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