Подтвердить что ты не робот

Семантические URL-адреса с точками в .net

Я пытаюсь сделать семантические URL-адреса для поисковых страниц, но если кто-то использует поиск, завершенный в точке, двигатель .net возвращает 404.

Запрос даже не попадает в механизм маршрутизации, поэтому я думаю, что его что-то связано с безопасностью или что-то в этом роде.

Например, маршруты stackoverflow также не работают в этом случае: https://stackoverflow.com/info/tagged/etc.

4b9b3361

Ответ 1

Если вы используете .NET 4.0 и IIS 7+, вы можете установить этот флаг в разделе system.web вашего web.config, и это будет разрешено:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Я тестировал его, и он работает. Haack имеет объяснение.

Ответ 2

Все после "." это расширение файла. Если это расширение не сопоставляется с ASP.NET, оно не будет передано обработчику ASP.NET. Вместо этого IIS ищет статический файл. Следовательно, 404. Если он ничего не добавляет (и трудно понять, как это будет), я предлагаю отказаться от него.

Ответ 3

Когда конечный период не является значимым (как в случае https://stackoverflow.com/questions/tagged/etc.), вы можете использовать модуль URL-адреса URL-адреса IIS для разделения периодов ожидания.

Шаблон: ^(.*[^.])(\.+)$
Перепишите URL-адрес: {R:1}

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

Ответ 4

Похоже, что IIS может не знать, как обрабатывать запрос с пустым расширением.

Щелкните правой кнопкой мыши на веб-сайте и выберите "Свойства". Нажмите "Конфигурация..." на вкладке "Домашний каталог". Посмотрите на "Расширения приложений" и попробуйте добавить пустые расширения или подстановочные знаки.

Ответ 5

В окнах имена файлов не могут заканчиваться символом '.' Я думаю, что все проблемы возникают из-за этого, то есть IIS не знает, что с ним делать, поэтому он никогда не доходит до обработчика ошибок ASP.NET и не обрабатывает страницу по умолчанию IIS 404.

Большинство поисковых систем (хорошо Google в любом случае) исключают пунктуацию из запросов, и я думаю, что ваш тоже должен.

EDIT: Он падает, потому что у него нет типа файла, даже сайт Microsoft падает на вид http://www.microsoft.com/en/us/fallover., но вы можете изменить файлы ошибок по умолчанию (жить где-то вроде C:\WINDOWS\help\iisHelp\common) или полностью изменить его.

Отметьте это: Настройка пользовательских сообщений об ошибках (IIS 6.0)

Ответ 6

Вы не должны помещать точные поисковые запросы пользователя в строку запроса, как это... вы должны UrlEncode их. Это решит проблему.