Что выбрать: ставить или не ставить слэш на конце URL?

Cтавить или не ставить слэш на конце URL?
elfchat.ru/ru/signup
elfchat.ru/ru/signup/
elfchat.ru/ru/signup.html
  • Вопрос задан
  • 34737 просмотров
Пригласить эксперта
Ответы на вопрос 9
@IlVin
В www.ietf.org/rfc/rfc1738.txt этот вопрос не регламентирован.

; HTTP
httpurl = «http://» hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]

Хотите ставьте '/' в конце, а хотите не ставьте — главное, чтобы ваш сервер этот URL понимал.

Проблемы подстерегают с другой стороны — обычно браузер получает HTML документы, в которых могут быть картинки, с относительными URI, для которых браузер вычисляет абсолютный URL и получается веселуха: /path/to/page.html/image.gif и т.п.

Так что совет — для папок в конце пишите '/', а для файлов не пишите. И тогда браузер правильно вычислит адреса для подключаемых ресурсов.
Ответ написан
@pazitiffcheg
Для тех, кто утверждает, что слеш в конце url нужно ставить и что веб-сервер очень напрягается, если слеш не поставить, прошу выложить кусок кода из apache или nginx отвечающий за реализацию данного алгоритма - это же opensource проекты, всё в свободном доступе.
Поисковикам же совершенно всё равно, по какому адресу обрабатывать страничку, главное чтоб небыло задвоения, поэтому в правилах веб-сервера делаем 301 редирект на какой либо из вариантов.
Поисковики не панацея интернета, и как заметил уважаемый IlVin IlVin
"В www.ietf.org/rfc/rfc1738.txt этот вопрос не регламентирован."
Поисковики пишут универсальные алгоритмы для того чтобы их поиск был качественен, но они не распоряжаются, как должен работать тот или иной веб сервер. Есть запрос по url и есть ответ - всё просто.
Сам я терпеть не могу, когда попадается сайт со слешами на конце особенно г..сайтах. Сайту и так плохо, так еще какой то не компетентный СЕОшник еще больше его запорол.....

Люди, не перебарщивайте и не втирайте про слеш на конце, он там вообще не нужен, т.к. в url нет понятия "Директория" - это не файловая система. URL - это адрес, состоящий из символов, слеш определяет структуру адреса, только и всего.
Ответ написан
Комментировать
MTonly
@MTonly
Веб-разработчик с 2002 года
Ставить. Только так можно обеспечить единообразные URL-адреса вне зависимости от того, как именно они реализуются: серверным движком или просто index-файлом в физической папке.

И желательно делать редирект с адреса без слэша на адрес на канонический адрес со слэшом.
Ответ написан
ozware
@ozware
Яндекс, если видит урл без слеша, иногда проверяет такой же урл, но со слешем. В этом случае важно делать 301-й редирект на страницу без слеша (в друпале для этого есть специальный модуль, кажется, GlobalRedirect называется).

Ошибкой будет выдавать одинаковую страницу со слешем и без, т.к. это дубли страниц и могут быть санкции поисковых систем.

Ну это все с точки зрения СЕО. А с практической точки зрения — абсолютно все равно как делать, только считается, что со слешем по смыслу должен быть каталог чего-то, а без — страница.
Ответ написан
По-моему, надо исходить из семантики: если страница example.com/path/to/page является обычной контентной страницей, грубо говоря, файлом без расширения в терминах ФС, то слэш ставить не нужно; если является «агрегирующей функцией» своих элементов (список, например), особенно если к ним можно обращаться как к example.com/path/to/page/element — слэш нужен.
Ответ написан
kashey
@kashey
Программирую большую половину жизни
правильнее со слешом, так как «образно говоря» site.ru/path/to/page/ подразумевает site.ru/path/to/page/index.html (более того если вы напишите site.ru/path/to/page/index.html тотже гугль будет долбиться в итоге в site.ru/path/to/page/)
а если вы напишите site.ru/path/to/page это будет ссылка на непонятно что.
Другое дело может быть например в случае site.ru/path/to/last.page
также совершенно валидно site.ru/path/to/page.html

Не думайте как правильно — подумайте как «семантичней»
Ответ написан
savostin
@savostin
Еще один программист
Сейчас уже такие URL делают, что закачаешься:
http://www2.sub.domain.com/fol.der/#/my_page:here.html?bla=bla&foo=bar

Так что пишите как хотите — всем пофиг что там в строке адреса.
По поводу замечания о СЕО теоретически согласен, но думаю поисковики уже и с этим разбираются.
Ответ написан
bubuq
@bubuq
Никаких «файлов» у веб-сервера нет. Есть запросы, в ответ на которые сервер может выдать тот или иной контент. ИМХО, если в УРЛе встречается "/index.html", что-то очень не то с разработчиками или админами.

Слеш или не слеш — зависит от настроек сервера. Как правило, УРЛ без слеша приводит к дополнительному запросу на сервер, за исключением запроса на рут сервера:

www.domain.com и www.domain.com/ обрабатываются одинаково.
Ответ написан
Комментировать
XXXXPro
@XXXXPro
Fullstack Web developer
Я придерживаюсь мнения, что один из признаков технически хорошо сделанного сайта — неотличимость снаружи от сайта на статике (даже если на самом деле всё работает на супернавороченной CMS). Поэтому на этапе создания страницы смотрим, будут ли у неё дочерние элементы. Если нет, то делаем с расширением .htm или .html, если могут, то с / на конце.
Пожалуй, самая большая разница, которую нужно учитывать — это формирование относительных ссылок. В случае, если на странице с URL /razdel/tema мы сделаем относительную ссылку second-page, то она будет вести на /razdel/second-page (что нелогично, так как это шаг на уровень выше), а если на странице, у которой URL -- /razdel/tema/, то на /razdel/tema/second-page.
Исключение — это идентификаторы GUID во всяких REST API, которые пользователь никогда в адресной строке не увидит, и где данные отдаются в JSON или XML, там лучше обойтись без / просто ради экономии траффика.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы