Когда я должен использовать косую черту в своем URL? - PullRequest
254 голосов
/ 10 мая 2011

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

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

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

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

Ответы [ 8 ]

150 голосов
/ 08 мая 2013

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

  • child относительно /base/ равно /base/child.
  • child относительно /base есть (возможно, на удивление) /child.
125 голосов
/ 10 мая 2011

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

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

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

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

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

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

Источник: Википедия Унифицированный указатель ресурса (URL)

Также:

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

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

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

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

Наконец:

  1. Косая черта в конце URL делает адрес "красивым".

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

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

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

57 голосов
/ 09 сентября 2011

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

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

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

24 голосов
/ 09 апреля 2013

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

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

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

Браузер запрашивает /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/, который, в свою очередь, перенаправляет на HTTPS URL-адрес customer/login/.В итоге вы получите тонн ненужных перенаправлений HTTP (= дополнительные запросы), которые замедляют работу пользователя.

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

Сводка:

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

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

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

18 голосов
/ 15 октября 2014

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

10 голосов
/ 10 апреля 2013

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

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

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

9 голосов
/ 10 мая 2011

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

2 голосов
/ 11 сентября 2018

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

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

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

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

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

...