Можно ли правильно закодировать обратную косую черту в URL-адресе с перезаписью URL-адреса?

Я работаю над проектом ASP.NET MVC2. Проблема в том, что когда строка, которая будет переписана в URL-адрес, содержит специальный символ, такой как обратная косая черта или вопросительный знак, URL-адрес будет неправильным, даже если я закодировал его ранее.

Например:

  1. У меня есть идентификатор продукта "p001\2-2".
  2. Я закодировал его в "p001%5C2-2"
  3. URL-адрес http://domain.com/Product/p001%5C2-2 отвечает на ошибку HTTP 400 — неверный запрос.

Как я могу сделать это правильно?


person Edison Chuang    schedule 19.05.2010    source источник
comment
На данный момент я удалил свой ответ, поэтому вопрос может появиться в разделе без ответа, тогда некоторые пользователи asp.net могут взглянуть. Я должен был понимать кодирование URL-адресов, но не конкретное asp.net-mvc.   -  person YOU    schedule 20.05.2010


Ответы (2)


Попробуйте использовать Html.Encode для разрешения обратной косой черты. Если обратная косая черта является единственным «специальным» символом в вашем идентификаторе, вы можете использовать Replace("%5C","\").

Вы проверили свою карту маршрутизации? должен быть такой маршрут

Продукт/{prodictID}

person Tobi    schedule 22.06.2010

У меня была аналогичная проблема с %2F в моих URL-адресах. Попробуйте добавить флаг nOrmalize к вашему rewriteRule.

Пример с флагом нормализации "O", выделенным жирным шрифтом:

RewriteRule ^(.*)index.html?$ http://www.yoursite.com/$1 [R =301,L,O]

person TylerDurden    schedule 31.12.2012