URL-адрес веб-сайта, скрывающий / скрывающий файл

1658
mk12

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

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

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

3

3 ответа на вопрос

9
Josh Hunt

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

Где этот код будет размещен? mk12 15 лет назад 0
Это будет зависеть от конфигурации сервера или используемой платформы. Я обновлю свой вопрос соответственно. Josh Hunt 15 лет назад 0
Что касается Google, например google.com/search?client=safari&rls=en&q=superuser&ie=UTF-8&oe=UTF-8, поиск уведомлений не имеет расширения файла… mk12 15 лет назад 0
@ Mk12: программист может использовать любой URL, который он хочет. Я мог бы написать веб-приложение, которое помещает `.php` в конце каждого URL, когда на самом деле на сервере нет файлов PHP. Поэтому Google решил просто использовать «поиск» без каких-либо расширений. Они могли бы сделать что-то подобное, если бы захотели (и на самом деле это ничего бы не изменило): `google.com / search / client = safari / q = superuser /` Sasha Chedygov 15 лет назад 0
В любом случае +1, хорошее описание. Sasha Chedygov 15 лет назад 0
+1, но обратите внимание, что в примере с папкой будет index.html / php / what (если сервер не настроен на использование другого имени файла по умолчанию, тогда он будет иметь это) Phoshi 15 лет назад 0
На самом деле, @ Mk12 и @musicfreak, Google меняет этот URL-адрес на http://www.google.com/#client=safari&q=superuser ;-) См. Http://stackoverflow.com/questions/1122523/google-using -instead-оф-поиск-в-url-почему Arjan 15 лет назад 0
Это работает только на Firefox для меня, на сафари все еще `search?`. mk12 15 лет назад 0
Mk12: Посмотрите на вопрос, с которым связался Арджан. Google все еще проверяет это на определенных людях / рынках Josh Hunt 15 лет назад 0
1

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

Упс ... забыл ответить на вопрос только о доменном имени ... Это можно сделать с помощью набора фреймов и только с отображением фрейма контента. 15 лет назад 0
Вы можете редактировать свой ответ вместо написания комментария. Sasha Chedygov 15 лет назад 0
IIRC, человек с репутацией 1 не может редактировать свои собственные сообщения. CarlF 15 лет назад 0
Там он может редактировать! Абс, не могли бы вы отредактировать свой ответ, чтобы включить комментарий? Josh Hunt 15 лет назад 0
0
mk12

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

Это действительно больше взлома ... переписывание URL-адресов или указатели на содержание чаще, как это достигается Chris Thompson 15 лет назад 1