Вопрос:
Я создаю программное обеспечение вики, в основном клон wikipedia / mediawiki, но в ASP.NET MVC (главное в MVC, поэтому не рекомендуйте мне ScrewTurn).
Теперь у меня вопрос:
Я использую это сопоставление маршрутов для маршрутизации URL-адреса, например:
http://en.wikipedia.org/wiki/ASP.NET
routes.MapRoute(
"Wiki", // Routenname
//"{controller}/{action}/{id}", // URL mit Parametern
"wiki/{id}", // URL mit Parametern
new { controller = "Wiki", action = "dbLookup", id = UrlParameter.Optional } // Parameterstandardwerte
);
Мне просто пришло в голову, что могут быть названия вроде «AS / 400»:
http://en.wikipedia.org/wiki/AS/400
Кстати, есть еще один (заголовок «Слэш»):
http://en.wikipedia.org/wiki//
И этот:
http://en.wikipedia.org/wiki//dev/null
В целом, в Википедии есть список интересных заголовков вроде этого: http://en.wikipedia.org/wiki/Wikipedia:Articles_with_slashes_in_title
Как правильно составить маршруты, подобные этому маршруту?
Изменить:
Примерно так:
Если URL начинается с / Wiki / и не начинается с / wiki / Edit / (но не / Wiki / Edit) затем передайте весь остальной URL как Id.
Изменить:
Хм, еще одна проблема: как я могу перенаправить это:
http://en.wikipedia.org/wiki/C&A
Википедия может ...
Изменить:
Согласно wikipedia, из-за конфликтов с синтаксисом wikitext в заголовках страниц нельзя использовать только следующие символы (и они не поддерживаются DISPLAYTITLE):
# < > [ ] | { }
Изменить:
Чтобы разрешить * и &, поместите
<httpRuntime requestPathInvalidCharacters="" />
в раздел ‹system.web› в файле web.config
(Найдено здесь: http://www.christophercrooker.com/use-any-characters-you-want-in-your-urls-with-aspnet-4-and-iis)