Это из-за небольшого заблуждения относительно того, что собой представляет 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
.
Другой подход просто полностью избавляется от всего этого. Все, что за TLD (в данном случае /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), так что это, вероятно, не так точно. Это просто пример