Добавлена ​​ли автоматически добавляемая косая черта по клику URL домашней страницы в браузере?


17

Я спрашиваю об этом, потому что всякий раз, когда я наводю указатель мыши на ссылку на домашнюю страницу (например http://www.example.com), я замечаю, что всегда добавляется косая черта (как видно в строке состояния браузера), содержит ли ссылка на домашнюю страницу атрибут href, который заканчивается на косая черта или нет. Но всякий раз, когда я нахожусь на домашней странице, отображаемый URL не будет иметь косой черты.

Я попытался ввести косую черту в адресную строку. И с включенным Firebug, я заметил, что сайт всегда возвращает статус 200 OK. Статья здесь обсуждать эти состояния, имеющие косую черту в конце избежит 301 переназначения. Но я не вижу никакого перенаправления, даже на этой странице.

Может ли это быть функцией браузера, которая добавляет косую черту?


Да. Например, я думаю, что Opera скрывает косую черту (и иногда она также скрывает протокол, который сводит меня с ума от разработчика!) ...
Matt

Что именно здесь вопрос? (Или суть вопроса.) А какой «сайт» вы имеете в виду? Например, если вы проверите здесь с веб-мастерами, вы заметите, что в Firefox и Chrome (я не делаю полный цикл тестирования), то, что вы описываете в отношении добавляемой косой черты, не происходит. На самом деле, кажется, что заставляет удалить косую черту, если вы попытаетесь ее добавить.
Су '14

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

2
@Matt Opera также скрывает строку запроса (чуть позже ?в URL), что довольно глупо для ИМО.
Рассерженная шлюха

Ответы:


28

Да, все основные браузеры «добавляют косую черту» к HTTP-запросу при запросе URL-адреса пустого домена (т. Е. Домашней страницы). Это действительно необходимо для того, чтобы сделать HTTP-запрос действительным, для чего http://example.com/:

GET / HTTP/1.1
Host: example.com

Обратите внимание на /(косую черту) в первой строке - это запрашиваемый URL. Недопустимо ничего не иметь здесь. Из RFC 2616 :

Обратите внимание, что абсолютный путь не может быть пустым; если ни один не присутствует в исходном URI, он ДОЛЖЕН быть задан как "/" (корень сервера).

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

Перенаправление 301 не происходит, если вы укажете http://example.com(без косой черты), потому что браузер исправляет HTTP-запрос перед его выполнением.

Обратите внимание, что это отличается от косой черты, добавляемой в конец URL, когда есть путь / каталог. например. http://example.com/directory/, Статья, на которую вы ссылаетесь, похоже, относится к обоим и не является полностью правильной IMO. Если вы запросили http://example.com/directory(без косой черты), то браузер не добавляет косую черту, и да, большинство серверов 301 будут перенаправлять на http://example.com/directory/(косая черта), но это зависит от сервера; это может просто сломаться! Например, в Apache это зависит от установки DirectorySlashдирективы on.


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

5
@ Anagio Не думаю, что ты понимаешь ответ. Вы не будете экономить ресурсы сервера вообще, потому что нет перенаправления. Домен с косой чертой и без нее идентичен на 100%. Другими словами, нет абсолютно никакого способа вернуть различный контент для каждого (что вы можете сделать с URL-адресами каталогов).
Рассерженная шлюха

1
@DisgruntledGoat, если вы отключите косую черту, а сервер перенаправит, то добавление косой черты в ссылках избавит сервер от необходимости перезагружать страницу. Это все, к чему я стремился: чтобы
рассказать

5
@Anagio Эта статья о конечных слешах для каталогов , тогда как этот вопрос касается конечных слешей только в домене . Как указано в ответе выше, он не имеет разницы, потому что ссылка на сервер example.comили example.com/оба требует одинакового запроса к серверу.
Рассерженная шлюха

3
... потому что браузер "исправит" это.
ОООНР
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.