URL-адреса сайтов без расширения файлов?
Когда я смотрю на Amazon.com, и я вижу их URL-адрес для страниц, он не имеет .htm
, .html
или .php
в конце URL-адреса.
Это как:
http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155
Почему и как? Что это за расширение?
Ответы
Ответ 1
Ваш браузер не заботится о расширении файла, а только о типе контента, который сообщает сервер. (Хорошо, если вы не используете IE, потому что в Microsoft они думают, что знают больше о том, что вы обслуживаете, чем вы). Если ваш сервер сообщает, что содержимое, которое обслуживается, является Content-Type: text/html, тогда ваш браузер должен обрабатывать его так же, как HTML, независимо от имени файла.
Ответ 2
Как правило, он реализован с использованием схемы перезаписи URL-адреса некоторого описания. Основное понятие состоит в том, что веб-сервер должен перемещаться к ресурсам с соответствующими URI, а не классическими старыми URL-адресами, которые несут в себе детали реализации и которые в будущем могут быть уязвимы для будущих изменений.
Подробное обсуждение этой темы можно найти в статье Тима Бернерса-Ли Cool URIs Do not Change, в которой утверждается в пользу сокращения нерелевантный рывок в URI как средство, помогающее избежать проблем, возникающих при изменении реализаций, и когда ресурсы переходят на другой URL-адрес. Сама статья содержит хорошие общие рекомендации по планированию схемы URI и хорошо стоит прочитать.
Ответ 3
Для сайтов, использующих Apache, они, вероятно, используют mod_rewrite, что позволяет им переписывать URLS (и сделать их более удобными для пользователей и SEO)
Подробнее вы можете прочитать здесь http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
и здесь http://www.sitepoint.com/article/apache-mod_rewrite-examples/
EDIT. Также существуют модули перезаписи для IIS.
Ответ 4
Более конкретно, чем большинство из этих ответов:
В веб-контенте не используется расширение файла, чтобы определить, какой файл будет обслуживаться (если вы не Internet Explorer). Вместо этого они используют заголовок Content-type
HTTP, который отправляется по кабелю до содержимого изображения, HTML-страницы, загрузки или чего-то еще. Например:
Content-type: text/html
означает, что просматриваемая страница должна интерпретироваться как HTML, а
Content-type: image/png
означает, что страница является PNG-изображением.
Веб-серверы часто используют расширение файла, если файл обслуживается непосредственно с диска, чтобы определить, что Content-type
для назначения, но веб-приложения также могут создавать страницы с любым Content-type
, которые им нравятся в ответ на запрос. Независимо от структуры или расширения имени файла, если фактическое содержимое страницы соответствует объявленному Content-type
, данные отображаются в соответствии с назначением.
Ответ 5
Традиционно расширение файла представляет файл, который обслуживается.
Например
http://someserver/somepath/image.jpg
Позже этот же подход использовался, чтобы позволить script обрабатывать параметр
http://somerverser/somepath/script.php?param=1234&other=7890
В этом случае файл был php script, который обрабатывал "запрос" и представлял динамически созданный файл.
В настоящее время приложения гораздо сложнее, чем это (амазонка, которую вы измерили)
Тогда нет ни одного script, который обрабатывает запрос (но гораздо более сложное приложение с несколькими файлами/методами/функциями/объектом и т.д.), а URL-адрес больше похож на точку входа для веб-приложения (он может иметь script позади, но это другая вещь), поэтому теперь веб-приложения, такие как amazon, и да stackoverflow не показывают файл в URL-адресе, но все, что происходит, обрабатывается приложением на стороне сервера.
URL-адреса сайтов без расширения файла?
Здесь я задаю параметры webapp и 322747 параметр
Надеюсь, это небольшое объяснение поможет вам лучше понять все остальные ответы.
Ответ 6
Ну как насчет наличия файла index.html в каталоге, а затем введите путь в браузер? Я вижу, что мои Firefox и IE7 автоматически помещают конечную косую черту, мне не нужно ее вводить. Это больше подходит для таких людей, как я, которые не считают, что каждый URL-адрес на земле должен вызывать php, perl, cgi и еще 10 000 других приложений, чтобы отправить несколько килобайт данных.
Ответ 7
Многие люди используют более " RESTful" тип архитектуры... или, по крайней мере, URL-адреса REST.
Этот сайт (StackOverflow) dosn't показывает расширение файла... он использует ASP.NET MVC.
Ответ 8
В зависимости от настроек вашего сервера вы можете использовать (или нет) любое расширение, которое вы хотите. Вы даже можете установить расширения как ".JamesRocks", но это будет не очень полезно:)
В любом случае, на всякий случай, если вы новичок в веб-программировании, все эти тарабарщины в конце есть аргументы для операции GET, а не расширения страницы.
Ответ 9
Несколько сообщений упомянули об этом, и я буду взвеситься. Это абсолютно система перезаписи URL-адресов, и у ряда платформ есть способы реализовать это.
Я работал на нескольких крупных сайтах электронной коммерции, и теперь он является очень важной частью присутствия в Интернете и предлагает ряд преимуществ.
Я бы рекомендовал использовать технологию, с которой вы хотите работать, и исследовать образцы механизма перезаписи URL-адресов для этой платформы. Например, для .NET есть URL-адрес для переписывания URL-адреса google 'asp.net' или использовать дополнительную структуру, такую как MVC, которая делает эту функциональность из коробки.
Ответ 10
В Django (структура веб-приложений для python) вы сами создаете URL-адреса, независимо от имени файла или даже любого пути на сервере.
Вы просто скажете что-то вроде "Я хочу, чтобы /news/<number>/
URL-адреса обрабатывались этой функцией"