Почему расширения часто скрыты в URL?

20

Много раз я вижу, что расширения URL скрыты (например .html, .php), но не все сайты делают это.

Почему веб-мастера скрывают расширение? Это для безопасности, чтобы URL выглядел чище или для какой-то другой цели?

неизвестный
источник
w3.org/Provider/Style/URI.html
Майкл Хэмптон

Ответы:

29

Есть несколько причин для удаления расширений из URL:

  • Чтобы URL выглядели чище
  • Чтобы сделать URL легче набирать
  • Чтобы было легче запомнить URL
  • Чтобы сделать URL более подходящими для ключевых слов SEO
  • Чтобы иметь возможность менять технологии - если вы когда-нибудь захотите перевести свой сайт с одной технологии на другую, это будет проще всего сделать без пользователей, даже не зная, нет ли расширений в URL-адресах.

Имейте в виду , что многие сайты создаются с помощью системы управления контентом (CMS) , что бы сделать URL - адреса выглядеть следующим образом : /index.php?page=this-is-the-widget-page. Это особенно некрасиво и имеет гораздо больше глупостей, чем просто продолжение. Переписывание для удаления index.php?page=делает это намного лучше.

Расширения не нужны в Интернете, поскольку серверы отправляют тип документа в качестве заголовка. Веб-страницы обслуживаются как text/html, изображения как image/pngили image/jpeg. Это позволяет браузерам узнать, как визуализировать контент, не используя расширение, чтобы выяснить, что URL содержит текст, HTML, PDF или изображение (для получения дополнительной информации см. Статью Wikipedia Internet media type ).

Некоторые веб-мастера предпочитают использовать в своих URL-адресах расширение, соответствующее этому типу контента. Таким образом, любой text/htmlдокумент будет иметь .htmlрасширение, а любой image/pngдокумент будет иметь .pngрасширение. Это может помочь, когда URL-адреса сохраняются в файловой системе, где метаданные об их типе содержимого теряются. В большинстве файловых систем программа, открывающая файл, выбирается по расширению. Таким образом, даже если страница обслуживается PHP, некоторые веб-мастера удаляют .phpрасширение, а некоторые заменяют его на .html.

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

Стивен Остермиллер
источник
11
В некоторых средах (например, MVC) URL-адрес не идентифицирует файл, поэтому расширение для скрытия отсутствует.
Хенрик Рипа
6

Все веб-серверы имеют один или несколько «файлов по умолчанию». Это файл, который будет отображаться всякий раз, когда посетитель переходит на URL, который заканчивается косой чертой /, то есть в папке.

Если имя файла по умолчанию на вашем веб-сервере index.phpи посетитель идет к нему www.example.com/pagename/, они фактически получают доступ www.example.com/pagename/index.php.

Если трейлинг отсутствует /, веб-сервер, вероятно, просто переписывает URL, чтобы удалить его, поскольку в этом нет необходимости. Этот сайт, по сути, делает это.

Athoxx
источник
2
Я не уверен, что вопрос был "как", а скорее "почему". Патрик, ваш ответ абсолютно верен относительно того, как. Однако Стивен ответил на вопрос «почему»
Брандт Соловий
4

Это тип «крутой» схемы URI, к которой я стремлюсь на своем личном веб-сайте.

Лично причина, по которой я начал это делать (и, вероятно, гораздо больше веб-дизайнеров и разработчиков!), Была после прочтения статьи «Классные URI не меняются» - этот документ был написан отцом-основателем Всемирной паутины Тимом Бернерсом. -Ли.

В известной статье Тима Бернерса-Ли он в основном приводит те же причины, что и Стивен Остермиллер в своем превосходном ответе на этот вопрос .

Чтобы дать более конкретный ответ на ваш главный вопрос: «Почему расширения скрыты в URL?». Ну, я бы сказал, что основные причины для меня:

1. Для будущего URI:

Например, в то время могло бы показаться хорошей идеей использовать URI, например: http://www.example.com/page.pl где .plрасширение файла для сценария Perl. Тем не менее, thesedays, большинство веб - разработчики используют ASP.NET или PHP для серверной-скриптов, поэтому накануне , хотя сегодня , http://www.example.com/page.php звучит как лучшая идея, в конце концов PHP и ASP / ASP.net станут старомодными. Так что лучшая идея - просто удалить расширение.

2. Читабельность и запоминаемость:

«Классный» URI гораздо проще передать людям в устной форме, на бумаге (например, рекламные объявления, визитные карточки и т. Д.), Не говоря уже о том, что его легче запомнить.

3. «Взлом» *

Хотя я бы сказал, что подавляющее большинство пользователей в наши дни, вероятно, используют поисковую систему для всего - я даже видел людей, которые заходили в адресную строку и печатали www.google.com, а затем использовали Google для буквального ввода www.ebay.com! Но я думаю, что если у меня есть веб-сайт, основанный на мультимедиа, URI http://www.example.com/videoнамекает на то, что музыкальный раздел можно найти под URI http://www.example.com/audio, и так далее. (Я все еще использую адресную строку для перехода на веб-сайты - я довольно «старая школа» о подобных вещах!)

* (О! «Взлом» - это слово вообще существует ?! Ну, теперь оно есть !) :-)

4. ** Эстетика: чтобы они выглядели красивее! (Виноват мой ОКР!)

Тем не менее, я заметил, читая различные сайты, связанные с SEO, что многие веб-мастера фактически добавляют расширения файлов к динамическим URI, например:

Фактический URI может быть: http://www.example.com/article

Однако веб-мастер выполнит переписывание, чтобы URI «выглядел» статично, например: http://www.example.com/article.html

Логика этого заключается в том, что в основном поисковая система назначает более высокий рейтинг статическим страницам (которые, по-видимому, с меньшей вероятностью изменятся). (Хотя я не совсем эксперт в SEO, лично я не согласен с этой идеей - я догадываюсь, что с учетом того, что стоит за алгоритмами Google и Bing, потребуется чуть больше, чем поддельное расширение файла для Кон, чтобы вы оказались в положении полюса SERP!)

Для получения дополнительной информации об именовании URI, я рекомендую прочитать эти статьи:

Тим Бернерс-Ли:

W3C QA Советы:

Брайан Келли (UK Web Focus / UKOLN - Университет Бата):

Надеюсь это поможет!

Джордан Кларк
источник
2

Я полностью согласен со всеми ответами, приведенными выше. Просто добавив, что одной из причин, почему расширения скрыты в URL, является безопасность. Проще говоря, если вы не раскрываете расширение в URL-адресе, нетрудно понять технологию, на которой было построено приложение. Допустим, страница сделана на PHP, а расширение не скрыто, и тогда хакер потенциально может определить уязвимости PHP и использовать их для выполнения какой-либо вредоносной деятельности.

Вишал Радж
источник
Я согласен с вашим комментарием, но я думаю, что использование URI для запутывания вашей серверной технологии в качестве меры безопасности бесполезно. На первый взгляд, вы являются скрытие конкретной используемой технологии. К сожалению, единственные люди, которых это «обманет», - это конечные пользователи; некоторые (если не большинство) из которых не имеют понятия, что такое URL, не говоря уже о ASP / PHP / и т. д. Из-за отсутствия лучшей фразы вы как бы «проповедуете хору».
Джордан Кларк,
1

Вы скрываете свои расширения страницы или нет, люди все еще могут знать, какую технологию вы использовали. Используя cURL, невозможно получить вашу технологию, получая информацию заголовка.

curl -I -L rembatvideo.ga

Затем вы увидите что-то вроде вашей технологии, запроса кеша, соединения и многого другого.

Ханс Исаа
источник
0

Полностью согласен, как объяснил «Стивен Остермиллер», но я бы хотел упомянуть хитрость, заключающуюся в том, чтобы скрыть расширение URL. И для этого вы должны использовать правило переписывания .htaccess , вот скрипт, который вам поможет:

Перенаправлять внешние .phpзапросы на URL без расширения

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
Раджеш Магар
источник