Добавление ссылок: могу ли я использовать //domain (double slash) для https: //и http: //

Мы скоро перейдем к https. Я понимаю, что разумно использовать ссылки //domain.com и ссылки на изображения src.

  • Затем браузер сначала попробует https? и если не найден http?
  • Поддерживается ли это всеми браузерами?

В конце концов, все ссылки на сайте используют //domain.com (с двойной косой чертой)?

И разве Google понимает (и следует) //domain.com ссылки?

5 голосов | спросил snh_nl 25 +04002014-10-25T10:40:18+04:00312014bEurope/MoscowSat, 25 Oct 2014 10:40:18 +0400 2014, 10:40:18

3 ответа


9

Браузеры не используют один протокол, а затем возвращаются к другому. Браузер будет использовать протокол, к которому он привязан. Если этот протокол не поддерживается, пользователь получит сообщение об ошибке.

Если вы хотите заставить пользователей использовать один протокол, вы можете перенаправить его из одного в другое. Например, чтобы принудительно установить безопасное соединение на вашем сайте, используйте следующее правило перезаписи в .htaccess . Он выдает 301 переадресацию из http://example.com/page.html в https://example.com/page.html ( источник )

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

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

Если ваш пользователь находится на https://example.com/foo.html, и вы хотите, чтобы они перешли к https://example.com/bar.html, то любой из следующих href будет работать в a:

  • Полный URL - https://example.com/bar.html - Если пользователь находится в http, он перенесет их на сайт https.
  • Относительно протокола - //example.com/bar.html - Пользователь будет перенаправлен либо на https://example.com/bar.html или http://example.com/bar.html в зависимости от того, какой протокол они используют в настоящее время.
  • Относительно сайта - /bar.html - И протокол, и доменное имя остаются неизменными, весь путь в URL изменяется.
  • Относительный каталог - bar.html - Заменяет часть документа в URL-адресе (все после последней косой черты)

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

Относительные URL-адреса каталогов также могут работать, но в некоторых случаях они могут быть сложными:

  • Ссылка на example.com/bar/foo.html на example.com/bar/ сложно. Относительный URL-адрес каталога - ./, где . означает текущий каталог. URL-адрес сайта - это просто /bar/.
  • Ссылка на каталог вверх использует обозначение ... Поэтому для ссылки из example.com/bar/foo.html на example.com/baz.html ссылка будет ../baz.html Относительная ссылка сервера будет просто /baz.html.

Возможно, вы захотите использовать относительные ссылки каталога для ссылки на другие документы, которые, как известно, находятся в текущем каталоге, и использовать ссылки на сайты для ссылки на JS, CSS и изображения, которые обычно находятся в корне или рядом с корнем сайта .

Протокольные относительные директивы наиболее полезны для привязки к другим сайтам , где вы хотите сохранить протокол. Я использую это чаще всего для сторонних JavaScript или изображений. Если они не получены безопасно, когда мой пользователь защищен, пользователь получает предупреждение. Если мой пользователь не защищен, он может сделать мой сайт медленнее, чтобы безопасно извлекать ресурсы из других сайтов. Например, если вы использовали данные валюты с моего сайта конвертации валют, вы можете ссылаться на его сторонний JavaScript, например <script src="//coinmill.com/frame.js"></script>

Все современные браузеры и поисковые системы поддерживают все эти типы ссылок.

ответил Stephen Ostermiller 25 +04002014-10-25T14:44:33+04:00312014bEurope/MoscowSat, 25 Oct 2014 14:44:33 +0400 2014, 14:44:33
3

// в основном означает, что ресурс будет запрашиваться в том же протоколе, поэтому, если кто-то просматривает httpS://yourwebsite.com, и вы включаете таблицу стилей, например //yourwebsite.com/style.css, она будет загружать ---- +: = 3 =:. + ----

Если вы запрашиваете ресурсы из httpS://yourwebsie.com/style.css, когда страница http, браузер может сообщить об ошибке.

Чтобы ответить на ваши вопросы:

  

Затем браузер сначала попробует https? и если не найден http?

Нет, если https не найден, он просто вернет достаточный код состояния HTTP.

  

Поддерживается ли это всеми браузерами?

Насколько я знаю, все браузеры поддерживают это, но не верьте мне на слово ...

ответил William Edwards 25 +04002014-10-25T12:11:14+04:00312014bEurope/MoscowSat, 25 Oct 2014 12:11:14 +0400 2014, 12:11:14
2

В https://developers.google.com/speed/libraries/devguide Например, Google рекомендует использовать <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> для ссылки на jQuery. Google размещает библиотеки jQuery как на http, так и на https. Браузер будет использовать тот же протокол, который использовался для доступа к вашему сайту, чтобы получить включенный код JavaScript. Он не будет пытаться, а затем другой! Вы не хотите, чтобы сайт внезапно стал небезопасным, потому что ресурс можно найти только через http! Это имеет то преимущество, что вы не используете безопасное соединение только для JS, если к вашему сайту обращается через http, а не с предупреждением о том, что некоторые ресурсы не защищены, если ваш сайт обращается через https.

Вероятно, лучше использовать этот метод (//domain.tld/) для внешних ресурсов, если ваш сайт переключается с http на https (например, пользователь регистрировался in /not logged in). Если вы всегда используете http, вам это не нужно, если вы всегда используете https, вам это не нужно, поскольку вы можете просто жестко закодировать один и тот же протокол в своих URL-адресах, однако это не повредит.

Он не нужен для внутренних ресурсов, если вы используете относительные URL-адреса, поскольку браузер будет придерживаться того же протокола.

ответил CJ Dennis 27 +03002014-10-27T04:53:24+03:00312014bEurope/MoscowMon, 27 Oct 2014 04:53:24 +0300 2014, 04:53:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132