Совпадение всех символов и перенаправление, если строка не содержит - PullRequest
1 голос
/ 23 февраля 2012

Я использую несколько шаблонных веб-сайтов, использующих 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, чтобы добиться этого.Буду очень признателен, если кто-нибудь сможет помочь.

1 Ответ

1 голос
/ 23 февраля 2012

Я не знаком с правилами 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? Page = somepage»

С учетом «m / somepage» онодолжен выдать "m / default.asp? page = somepage"

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

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