Добавление ссылок: могу ли я использовать //domain (double slash) для https: //и http: //
Мы скоро перейдем к https
. Я понимаю, что разумно использовать ссылки //domain.com
и ссылки на изображения src.
- Затем браузер сначала попробует
https
? и если не найденhttp
? - Поддерживается ли это всеми браузерами?
В конце концов, все ссылки на сайте используют //domain.com
(с двойной косой чертой)?
И разве Google понимает (и следует) //domain.com
ссылки?
3 ответа
Браузеры не используют один протокол, а затем возвращаются к другому. Браузер будет использовать протокол, к которому он привязан. Если этот протокол не поддерживается, пользователь получит сообщение об ошибке.
Если вы хотите заставить пользователей использовать один протокол, вы можете перенаправить его из одного в другое. Например, чтобы принудительно установить безопасное соединение на вашем сайте, используйте следующее правило перезаписи в .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>
Все современные браузеры и поисковые системы поддерживают все эти типы ссылок.
//
в основном означает, что ресурс будет запрашиваться в том же протоколе, поэтому, если кто-то просматривает httpS://yourwebsite.com
, и вы включаете таблицу стилей, например //yourwebsite.com/style.css
, она будет загружать ---- +: = 3 =:. + ----
Если вы запрашиваете ресурсы из httpS://yourwebsie.com/style.css
, когда страница http
, браузер может сообщить об ошибке.
Чтобы ответить на ваши вопросы:
Затем браузер сначала попробует https? и если не найден http?
Нет, если https
не найден, он просто вернет достаточный код состояния HTTP.
Поддерживается ли это всеми браузерами?
Насколько я знаю, все браузеры поддерживают это, но не верьте мне на слово ...
В 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-адреса, поскольку браузер будет придерживаться того же протокола.