проблема с не-ASCII символами в URL в MVC 3 - PullRequest
0 голосов
/ 07 июля 2011

Я пишу приложение MVC 3 на двух языках: en и fa; и чтобы оптимизировать URL-адреса для поисковых систем, я использую заголовок страницы в URL-адресах, например: (для одной страницы в 2-х языках):

mysite.com/en/Home/Sheet/2/my-presentation-page
mysite.com/fa/Home/Sheet/2/صفحه-معرفی-من

и карта маршрута:

{lang}/{controller}/{action}/{id}/{uriTitle}

В локальном режиме это работает, но когда я загружаю его в Интернет, первый URL работает правильно, а второй показывает только домашнюю страницу !!! (mysite.com/fa/Home/Index) без каких-либо перенаправлений или каких-либо ошибок !!! просто, показывает вышеупомянутое содержание URL Обратите внимание, что URL не меняется! только содержание является содержанием домашней страницы! Просто это! Помогите мне, пожалуйста, я не понимаю, ПОЧЕМУ ?????? С уважением.

Ответы [ 2 ]

0 голосов
/ 06 июня 2012

Ваше решение все еще проблематично.В официальной спецификации для синтаксиса URL прямо указывается, что символы вне диапазона US-ASCII должны кодироваться в процентах, поэтому реализация в вашей старой хостинговой компании сделала это правильно.Кроме того, если ваш новый хост не соответствует этому стандарту, есть вероятность, что вы подвергаете уязвимости безопасности с помощью инъекций.

Нотация ABNF определяет свои терминальные значения как неотрицательные целые числа (кодовые точки) на основеНабор кодированных символов США-ASCII [ASCII].Поскольку URI - это последовательность символов, мы должны инвертировать это отношение, чтобы понять синтаксис URI.Поэтому целочисленные значения, используемые ABNF, должны быть сопоставлены с соответствующими им символами через US-ASCII, чтобы завершить правила синтаксиса.URI состоит из ограниченного набора символов, состоящего из цифр, букв и нескольких графических символов.Зарезервированное подмножество этих символов может использоваться для разграничения компонентов синтаксиса в URI, в то время как оставшиеся символы, включая как незарезервированный набор, так и те зарезервированные символы, которые не действуют как разделители, определяют идентификационные данные каждого компонента.

Синтаксис ABNF для действительных URL-адресов расположен по адресу: http://tools.ietf.org/html/rfc3986#appendix-A

0 голосов
/ 10 июля 2011

Я нахожу свой ответ сам.MVC не было никаких проблем!Моя проблема заключалась в следующем: сервер, отклонить все запросы с не-ASCII символами в их URL !!!Фактически, веб-сервер, когда получает запрос, содержащий символы, отличные от ascii, отвечает на него страницей сайта с кэшированием по умолчанию, а не передает запрос приложению!Я меняю свою хостинговую компанию, и моя проблема решена.Спасибо всем, С уважением

...