Как мне остановить UrlRewriter зачистки моих + символов - PullRequest
1 голос
/ 20 октября 2008

Я использую 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 Ответ

5 голосов
/ 20 октября 2008

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

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

...