3

Некоторые веб-сайты, независимо от того, на какой странице вы находитесь, всегда показывают свое доменное имя в адресной строке и ничего больше.

И многие показывают папки, например https://superuser.com/questions/ask, но не показывают фактический файл, который был бы похож на http://domain.tld/folder/file.extension .

Как оба достигнуты?

3 ответа3

9

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

1

Файл является файлом по умолчанию, как определено в конфигурации веб-серверов, или использует перезапись URL (путь к папке может даже не существовать).

0

Что я действительно искал, так это: просто создайте каталог, поместите index.php/html внутри папки, и ссылки на этот каталог не покажут файл. Спасибо за другие вещи тоже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .