Когда следует использовать конечную косую черту в моем URL?

Когда должен использоваться трейлинг-косая черта в URL-адресе? Например, должен ли мой URL-адрес выглядеть как /about-us/ или как /about-us?

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

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

Есть ли правильный способ узнать, что использовать?

Ответ 1

По моему личному мнению трейлинг-косые черты неправильно используются.

В основном формат URL-адресов поступает из одного и того же UNIX-формата файлов и папок, позже, в DOS-системах и, наконец, адаптирован для Интернета.

Типичным URL для этой книги в Unix-подобной операционной системе будет путь к файлу, такой как файл:///home/username/RomeoAndJuliet.pdf, идентифицирующий электронную книгу, сохраненную в файле на локальном жестком диске.

Источник: Википедия: Унифицированный идентификатор ресурса

Еще один хороший источник для чтения: Википедия: схема URI

В соответствии с RFC 1738, в котором определены URL-адреса в 1994 году, когда ресурсы содержат ссылки на другие ресурсы, они могут использовать относительные ссылки для определения местоположения второго ресурса, как бы говоря: "в том же месте, что и этот, кроме следующий относительный путь". Далее говорилось, что такие относительные URL-адреса зависят от исходного URL-адреса, содержащего иерархическую структуру, на которой основана относительная ссылка, и что ftp, http,  и схемы URL-адресов файлов являются примерами некоторых, которые можно считать иерархическими, , при этом компоненты иерархии разделяются символом "/".

Источник: Википедия Uniform Resource Locator (URL)

также:

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

http://example.com/foo/ (с завершающим косой чертой, обычно каталогом)

http://example.com/foo (без конечной косой черты, обычно файл)

Источник: Центральный блог Google WebMaster - слэш или не слэш

Наконец:

  • Слэш в конце URL-адреса делает адрес "красивым".

  • URL без косой черты в конце и без расширения выглядит несколько странным.

  • Вы никогда не назовете свой CSS файл (например) http://www.sample.com/stylesheet/:

НО Я являюсь сторонником передового опыта в Интернете, независимо от среды. Это может быть неудобно и неясно, как вы сказали об URL-адресе без ext.

Ответ 2

Это не вопрос предпочтения. /base и /base/ имеют разную семантику. Во многих случаях разница несущественна. Но это важно, когда есть относительные URL-адреса.

  • child относительно /base/ - /base/child.
  • child относительно /base (возможно, удивительно) /child.

Ответ 3

Я всегда удивляюсь широкому использованию трейлинг-косых черт на страницах без каталогов (WordPress среди других). Это действительно не должно быть либо делом, либо дебатом, потому что поломка после ресурса семантически ошибочна. Веб был разработан для доставки адресуемых ресурсов, а эти адреса - URL-адреса - были предназначены для эмуляции иерархии файловой системы в стиле nix. В этом контексте:

  • Слэши всегда обозначают каталоги, никогда не файлы.
  • Файлы могут быть названы как угодно (с расширениями или без них), но не могут содержать или заканчиваться косой чертой.

Используя эти рекомендации, неправильно поместить косую черту после ресурса, отличного от каталога.

Ответ 4

Это не вопрос эстетики, а действительно техническая разница. Справочник, думающий об этом, абсолютно корректен и в значительной степени объясняет все. Дайте ему понять:

Вы вернулись в каменный век сейчас или только статичные страницы

У вас есть фиксированная структура каталогов на вашем веб-сервере и только статические файлы, такие как изображения, html и т.д. — ни серверных сценариев, ни вообще.

Браузер запрашивает /index.htm, он существует и доставляется клиенту. Позже у вас много - скажем, просмотренных фильмов DVD и html-страницы для каждого из них в каталоге /dvd/. Теперь кто-то просит /dvd/adams_apples.htm, и он доставлен, потому что он есть.

В какой-то момент кто-то просто запрашивает /dvd/ - который является каталогом, и сервер пытается выяснить, что нужно доставить. Помимо ограничений доступа и т.д. Есть две возможности: Показывать пользователю содержимое каталога (я уверен, вы уже видели это где-то) или показать файл по умолчанию (в Apache он: DirectoryIndex: sets the file that Apache will serve if a directory is requested.)

Пока все хорошо, это ожидаемый случай. Он уже показывает разницу в обработке, поэтому давайте в нее входим:

В 5:34 утра вы допустили ошибку при загрузке файлов

(Это, кстати, вполне понятно). Итак, вы сделали что-то совершенно неправильное, и вместо загрузки /dvd/the_big_lebowski.htm вы загрузили этот файл как dvd (без расширения) на /.

Кто-то добавил в закладки ваш каталог /dvd/ (конечно, вы не хотели создавать и всегда обновлять этот отличный index.htm) и посещают ваш веб-сайт. Содержимое каталога доставляется - все отлично.

Кто-то слышал о вашем списке и печатает /dvd. И теперь он завинчен. Вместо вашего каталога DVD-дисков сервер находит файл с этим именем и доставляет файл Big Lebowski.

Итак, вы удаляете этот файл и говорите парню, чтобы перезагрузить страницу. Ваш сервер ищет файл /dvd, но он ушел. Большинство серверов затем заметят, что есть каталог с таким именем и сообщают клиенту, что то, что он ищет, действительно где-то в другом месте. Ответ скорее всего будет:

Status Code:301 Moved Permanently с Location: http://[...]/dvd/

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

Наконец, после получения этого ответа клиент загружает /dvd/, и все в порядке.

Это нормально? Нет.

"Просто отлично" недостаточно для вас

У вас есть динамическая страница, где все передается на /index.php и обрабатывается. До сих пор все работало неплохо, но все это начинает ощущаться медленнее, и вы исследуете.

Вскоре вы заметите, что /dvd/list делает то же самое: перенаправление на /dvd/list/, которое затем внутренне переводится в index.php?controller=dvd&action=list. Еще один запрос - но еще хуже! customer/login перенаправляется на customer/login/, который, в свою очередь, перенаправляет URL-адрес HTTPS customer/login/. В итоге у вас есть тонны ненужных HTTP-перенаправлений (= дополнительные запросы), которые замедляют работу пользователя.

Скорее всего, у вас также есть индекс каталога по умолчанию: index.php?controller=dvd без action просто внутренне загружает index.php?controller=dvd&action=list.

Резюме:

  • Если он заканчивается на /, он никогда не может быть файлом. Отсутствие угадывания сервера.

  • Слэш или никакая косая черта не являются совершенно разными значениями. Существует разница в технических ресурсах между "косой чертой или без косой черты", и вы должны знать об этом и использовать ее соответствующим образом. Просто потому, что сервер, скорее всего, загружает /dvd/index.htm - или загружает правильный материал script - когда вы говорите /dvd: он делает это, но не потому, что вы сделали правильный запрос. Который был бы /dvd/.

  • Опуская косую черту, даже если вы действительно имеете в виду, что вырезанная версия дает вам дополнительный штраф HTTP-запроса.. Это всегда плохо (подумайте о задержке работы с мобильными устройствами) и имеет больший вес, чем "довольно URL" - тем более, что сканеры не такие глупые, как полагаются оптимизаторы или хотят, чтобы вы верили;)

Ответ 5

Когда вы создаете свой URL /about-us/ (с завершающей косой чертой), легко начинать с одного файла index.html, а затем расширять его и добавлять больше файлов (например, our-CEO-john-doe.jpg) или даже создавать иерархию под он (например, /about-us/company/, /about-us/products/ и т.д.) по мере необходимости, не изменяя опубликованный URL. Это дает вам большую гибкость.

Ответ 6

Кто сказал, что для имени файла требуется расширение? взгляните на машину * nix когда-нибудь...
Я согласен с твоим другом, без следа.

Ответ 7

Другие ответы здесь, похоже, способствуют отсутствию конечной косой черты. Существует один случай, когда трейлинг-косая черта поможет с поисковой оптимизацией (SEO). В этом случае у вашего документа есть расширение, которое не является .html. Это становится проблемой с сайтами, которые оценивают сайты. Они могут выбирать между этими двумя URL-адресами:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

В таком случае я бы выбрал один с конечной чертой. Это связано с тем, что расширение .com является расширением для исполняемых командных файлов Windows. Поисковые системы и антивирусные проверки часто не любят URL-адреса, которые показывают, что они могут содержать вредоносное ПО, распространяемое через такие механизмы. Конечная косая черта, по-видимому, смягчает любые проблемы, позволяя странице оценивать в поисковых системах и получать вирусы.

Если ваши URL-адреса не имеют . в части файла, я бы рекомендовал исключить конечную косую черту для простоты.

Ответ 8

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

Просто выберите соглашение об именовании URL, которое вы предпочитаете, и включите канонический метатег в разделе <head> каждой веб-страницы.

Поисковые системы могут рассматривать одну веб-страницу как два отдельных повторяющихся URLS, когда они сталкиваются с ней и без косой черты, например example.com/about-us/ и example.com/about-us.

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

Канонический тег выглядит следующим образом: <link rel="canonical" href="#" onclick="location.href='https://example.com/about-us'; return false;"/>. Использование канонического метатега гарантирует, что поисковые системы учитывают только каждый из ваших URL один раз, независимо от того, включают ли другие веб-сайты конечную косую черту, когда они ссылаются на ваш сайт.