Как мне остановить UrlRewriter зачистки моих + символов

Я использую UrlRewriter от Intelligencia в своем приложении, и у меня возникла проблема, когда установленные мной правила удаляют символ + из моего URL.

Например, я хочу иметь URL /category/catname/+tag+tag но мне кажется, что /category/catname/ tag tag

У кого-нибудь есть идеи и это до моего регулярного выражения? Я попробовал это в регуляторе, и это соответствует отлично.

<rewriter>
  <rewrite url="^/content/(.+)$" to="~/page.aspx?name=$1" />
  <rewrite url="^/category/(.+)$" to="~/catalog.aspx?category=$1" />
  <rewrite url="^/product/(.+)$" to="~/catalog.aspx?product=$1" />
  <rewrite url="~/login/" to="~/login.aspx"/>
</rewriter>

1 ответ

Решение

Причина, по которой это происходит, заключается в том, что веб-сервер анализирует "+" как пробел, прежде чем ваш рерайтер получит его. Литеральный + - это то, что вы не можете использовать в реальном URL. Если вы хотите использовать +, тогда вам нужно ссылаться на него как на что-то вроде%2B: "/category/catname/%2Btag1%2Btag2".

Изменить: Вот пример кодирования URL Это иллюстрирует несколько символов, которые вы не можете использовать, и как их кодировать. Если вы ищете больше визуально привлекательных символов для URL, вы можете попробовать "-" и "_", которые оба действительны, я бы предложил "-". примером URL-адреса будет тогда "/category/catname/-tag1-tag2".

Другие вопросы по тегам