Может ли обратная косая черта быть правильно закодирована в URL с переписыванием URL?

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

Например:

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

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

Ответ 1

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

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

Продукт/{prodictID}

Ответ 2

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

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

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