Вопрос:
Я создаю программное обеспечение вики, в основном клон 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
Как правильно сделать маршруты, подобные этому маршруту?
Edit: Что-то вроде:Если URL начинается с / Wiki /, и если он не начинается с / Wiki / Edit / (но не / Wiki / Edit), тогда передайте все остальные URL как Id.
Изменить: Хм, просто еще одна проблема: как я могу маршрутизировать этот:http://en.wikipedia.org/wiki/C&A
Википедия может ...
Редактировать: Согласно википедии, из-за столкновений с синтаксисом викитекста, в заголовках страниц нельзя использовать только следующие символы (и они не поддерживаются DISPLAYTITLE):
# < > [ ] | { }
http://en.wikipedia.org/wiki/Wikipedia:Naming_conventions_(technical_restrictions)#Forbidden_characters
Edit: Чтобы разрешить * и &, поместите
<httpRuntime requestPathInvalidCharacters="" />
в разделв файле web.config
(находится здесь: http://www.christophercrooker.com/use-any-characters-you-want-in-your-urls-with-aspnet-4-and-iis)