Как я могу изменить регулярное выражение - PullRequest
1 голос
/ 05 августа 2011

Как я могу изменить регулярное выражение, чтобы оно также могло принимать + в моем URL

см .: http://awakeningwithin.simpletix.com/Search/Lorem+/ ... ошибка

если вы удалите символ: http://awakeningwithin.simpletix.com/Search/Lorem/ ... это работает.

<rule name="RewriteSearch" stopProcessing="true"> 
    <match url="^Search/([_0-9a-z-]+)" /> 
    <action type="Rewrite" url="Search.aspx?term={R:1}" /> 
</rule>

Ответы [ 3 ]

3 голосов
/ 05 августа 2011

Символ плюса + в URL означает ПРОБЕЛ (такой же, как %20).

1. На основании вышеизложенного попробуйте это: ^search/([-_0-9a-z\+ ]+)

2. Если вы видите ошибку 404, как это:

Ошибка HTTP 404.11 - не найдена

Модуль фильтрации запросов настроен на отклонение запроса, который содержит двойную escape-последовательность.

  • перейдите в IIS Manager, откройте Модуль фильтра запросов (глобальный .. или модуль для определенного сайта)
  • выберите Изменить параметры функции в боковом столбце (или через контекстное меню)
  • галочка Разрешить двойное экранирование

или используйте этот код (поместите где-нибудь в web.config в корневой папке сайта):

<system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true" />
    </security>
</system.webServer>

Если # 1 не работает, тогда выполните # 1 И # 2.

ПРОВЕРЕНО на IIS 7.5 - отлично работает .

0 голосов
/ 05 августа 2011

Как насчет добавления "+" в список допустимых символов:

([+_0-9a-z-]+)
0 голосов
/ 05 августа 2011

Вы можете использовать

 <match url="^Search/([_0-9a-z+-]+)" /> 

Я просто добавил + к разрешенным символам. Обратите внимание, что - должен по-прежнему находиться в самом конце набора символов, поскольку z-+ имеет там особое значение (все символы от z до плюс ... что бы это ни значило).

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