URL сайтов без расширения файла? - PullRequest
13 голосов
/ 27 ноября 2008

Когда я смотрю на Amazon.com и вижу их URL-адреса для страниц, в конце URL-адреса нет .htm, .html или .php.

Это как:
http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155

Почему и как? Что это за расширение?

Ответы [ 10 ]

23 голосов
/ 27 ноября 2008

Ваш браузер не заботится о расширении файла, только о типе контента, который сообщает сервер. (Ну, если вы не используете IE, потому что в Microsoft они думают, что знают больше о том, что вы обслуживаете, чем вы). Если ваш сервер сообщает, что обслуживаемый контент имеет тип Content-Type: text / html, то ваш браузер должен обрабатывать его как HTML, независимо от имени файла.

10 голосов
/ 27 ноября 2008

Как правило, это реализовано с использованием схемы перезаписи URL некоторого описания. Основная идея заключается в том, что в Интернете следует перейти к адресации ресурсов с надлежащими URI, а не к классическим старым URL-адресам, которые пропускают детали реализации и в результате которых уязвимы для будущих изменений.

Подробное обсуждение этой темы можно найти в статье Тима Бернерса-Ли Крутые URI не меняются , в которой говорится о том, что нужно уменьшить нерелевантную суету в URI, чтобы помочь избежать проблемы, возникающие при изменении реализаций и при перемещении ресурсов по другому URL-адресу. Сама статья содержит хороший общий совет по планированию схемы URI, и ее стоит прочитать.

5 голосов
/ 27 ноября 2008

Более конкретно, чем большинство из этих ответов:

Веб-контент не использует расширение файла, чтобы определить, какой тип файла обслуживается (если вы не Internet Explorer). Вместо этого они используют HTTP-заголовок Content-type, который передается по сети перед содержимым изображения, HTML-страницей, загрузкой или чем-либо еще. Например:

Content-type: text/html

означает, что просматриваемая страница должна интерпретироваться как HTML, а

Content-type: image/png

обозначает, что страница является изображением PNG.

Веб-серверы часто используют расширение файла, если файл подается непосредственно с диска на , определяют , что Content-type назначать, но веб-приложения могут также генерировать страницы с любым Content-type, который им нравится в ответ запрос. Независимо от структуры или расширения имени файла, при условии, что фактическое содержимое страницы совпадает с объявленным Content-type, данные отображаются так, как задумано.

5 голосов
/ 27 ноября 2008

Для веб-сайтов, использующих Apache , они, вероятно, используют mod_rewrite, который позволяет им переписывать URL-адреса (и делает их более удобными для пользователей и SEO)

Вы можете прочитать больше здесь http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html а тут http://www.sitepoint.com/article/apache-mod_rewrite-examples/

РЕДАКТИРОВАТЬ : Существуют также модули перезаписи для IIS.

3 голосов
/ 27 ноября 2008

Традиционно расширение файла представляет файл, который обслуживается.

Например

http://someserver/somepath/image.jpg

Позже этот же подход использовался, чтобы позволить сценарию обрабатывать параметр

http://somerverser/somepath/script.php?param=1234&other=7890

В этом случае файл представлял собой php-скрипт, который обрабатывал «запрос» и представлял динамически созданный файл.

В настоящее время приложения намного сложнее, чем это (а именно, амазонка, которую вы упомянули)

Тогда не существует ни одного скрипта, который обрабатывает запрос (но это гораздо более сложное приложение с несколькими файлами / методами / функциями / объектами и т. Д.), И URL больше похож на точку входа для веб-приложения (он может сценарий позади, но это совсем другое), поэтому теперь веб-приложения, такие как amazon, и да, stackoverflow не показывают файл в URL, но все сообщения обрабатываются приложением на стороне сервера.

URL-адреса веб-сайтов без расширения файла?

Здесь я вопросов представляет веб-приложение и 322747 параметр

Надеюсь, это небольшое объяснение поможет вам лучше понять все остальные ответы.

1 голос
/ 24 декабря 2010

Хорошо, а как насчет наличия файла index.html в каталоге, а затем вы вводите путь в браузер? Я вижу, что мой Firefox и IE7 оба добавляют косую черту автоматически, мне не нужно печатать ее. Это больше подходит для таких людей, как я, которые не считают, что каждый URL-адрес в мире должен вызывать php, perl, cgi и 10 000 других приложений только для того, чтобы отправить несколько килобайт данных.

0 голосов
/ 27 ноября 2008

В ряде постов упоминалось об этом, и я буду взвешиваться. Это абсолютно система перезаписи URL, и ряд платформ имеют способы реализовать это.

Я работал на нескольких крупных сайтах электронной коммерции, и теперь это очень важная часть веб-присутствия, которая предлагает ряд преимуществ.

Я бы порекомендовал взять технологию, с которой вы хотите работать, и исследовать примеры механизма перезаписи URL для этой платформы. Например, для .NET есть google «asp.net переписывание URL» или используйте платформу дополнений, такую ​​как MVC, которая выполняет эту функцию «из коробки».

0 голосов
/ 27 ноября 2008

В Django (каркас веб-приложений для python) вы сами создаете URL-адреса независимо от имени файла или даже любого пути на сервере.

Вы просто говорите что-то вроде "Я хочу, чтобы /news/<number>/ URL-адреса обрабатывались этой функцией"

0 голосов
/ 27 ноября 2008

В зависимости от настроек вашего сервера вы можете использовать (или не использовать) любое расширение, которое хотите. Вы могли бы даже установить расширения как ".JamesRocks", но это не очень поможет:)

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

0 голосов
/ 27 ноября 2008

Многие люди используют архитектуру типа " RESTful " ... или, по крайней мере, URL-адреса, выглядящие как REST.

Этот сайт (StackOverflow) не имеет расширения файла ... он использует ASP.NET MVC .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...