Это из-за небольшого заблуждения относительно того, что на самом деле представляет собой URL, вероятно, благодаря временам статики.HTML-файлы и PHP-скрипты.
Традиционно все, что находится за пределами ДВУ, является указателем на определенный файл. Скажем, сообщение в блоге находится по адресу example.com/blog/2009/oct/18/what-have-we-come-to
. Без использования причудливых техник это означало бы, что есть папка с именем blog, и в ней есть папка 2009
, и в этой папке каждый месяц, и в этих папках ДРУГАЯ папка для каждого дня месяца. Понятно, что это очень сложно очень быстро.
Вот почему веб-серверы (такие как Apache) и языки программирования (такие как PHP) изобрели переписывание URL. Что это делает, превращает указанный URL во что-то более управляемое, например example.com/blog/articles.php?id=423
. Здесь скрипт articles.php
будет использовать указанный почтовый идентификатор для поиска соответствующего поста, то он будет отображать сообщение, но пользователь все равно видеть URL как example.com/blog/2009/oct/18/what-have-we-come-to
.
Другой подход просто полностью избавляется от всего этого. Все, что находится за пределами ДВУ (в данном случае /questions/56772/website-url-hiding-hiding-file
), является просто указателем на содержимое, а не обязательно файлом. Некоторые веб-сайты, такие как Super User, построены с использованием подхода MVC (Model-View-Controller). Обычно это включает в себя список URL-адресов для веб-сайта и сопоставляет их с применимыми функциями и кодом для отображения этой страницы. Например, Super User может выглядеть так 1:
'superuser.com/' > displayFrontPage()
'superuser.com/questions/' > displayQuestionsList(sorted=default)
'superuser.com/questions/<QuestionID>/<QuestionID>' > displayQuestion(question= QuestionID)
Чаще всего это помещается в файл. У меня общий макет может быть:
superuser/
controller.aspx (which contains the list of URLs and points to a view in views.aspx)
views.aspx (which contains all the code for the superuser, such as displayFrontPage() and displayQuestion(question= QuestionID))
models.aspx (which contains information about the table in the database.)
1 Пожалуйста, имейте в виду, что я понятия не имею, как работает контроллер для ASP MVC (я скорее парень из Django), так что это, вероятно, не так точно. Это просто пример