web-dev-qa-db-ja.com

リンクの追加:https://とhttp://の両方に// domain(ダブルスラッシュ)を使用できますか

すぐにhttpsに移行します。 //domain.comリンクと画像のsrc参照を使用するのが賢明であることを理解しています。

  • その後、ブラウザは最初にhttpsを試しますか?見つからない場合はhttp
  • これはすべてのブラウザーでサポートされていますか?

最後に、サイト上のすべてのリンクで//domain.com(二重スラッシュ)を使用する必要がありますか?

Googleは//domain.comリンクを理解(および追跡)しますか?

6
snh_nl

ブラウザは1つのプロトコルを試した後、他のプロトコルにフォールバックしません。ブラウザは、リンクされているプロトコルを使用します。そのプロトコルがサポートされていない場合、ユーザーはエラーを受け取ります。

ユーザーに1つのプロトコルを使用するように強制する場合は、1つのプロトコルから別のプロトコルにリダイレクトできます。たとえば、サイトで強制的に安全な接続を行うには、。htaccessで次の書き換えルールを使用します。 http://example.com/page.htmlからhttps://example.com/page.htmlへの301リダイレクトを発行します(- source

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サイトに移動します。
  • Protocol relative-//example.com/bar.html-ユーザーは、https://example.com/bar.htmlまたはhttp://example.com/bar.htmlのいずれかにリダイレクトされます現在使用しているプロトコル。
  • Site relative-/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または画像に最もよく使用します。セキュアとして取得されない場合、ユーザーがセキュアであるときに、ユーザーに警告が表示されます。ユーザーがセキュリティで保護されていない場合、他のサイトからリソースを安全に取得するためにサイトが遅くなる可能性があります。たとえば、通貨換算サイトの通貨データを使用している場合、<script src="//coinmill.com/frame.js"></script>などのサードパーティのJavaScriptにリンクできます

最新のブラウザと検索エンジンはすべて、これらの種類のリンクをすべてサポートしています。

9

//は、基本的に同じプロトコルでリソースが要求されることを意味します。したがって、誰かがhttpS://yourwebsite.comを参照しており、//yourwebsite.com/style.cssのようなスタイルシートを含めると、httpS://yourwebsie.com/style.css

ページがhttpのときにhttpsからリソースを要求すると、ブラウザーでエラーが発生する場合があります。

質問に答えるには:

ブラウザは最初にhttpsを試しますか?そして、httpが見つからない場合は?

いいえ、//が見つからない場合は、十分なHTTPステータスコードを返すだけです。

これはすべてのブラウザーでサポートされていますか?

私の知る限り、すべてのブラウザがこれをサポートしていますが、Wordを使わないでください...

3
William Edwards

https://developers.google.com/speed/libraries/devguide では、<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>を使用してjQueryにリンクすることをお勧めします。 Googleは、httpとhttpsの両方でjQueryライブラリをホストしています。ブラウザは、サイトにアクセスして含まれるJavaScriptコードを取得するために使用したプロトコルと同じプロトコルを使用します。 1つを試してから、もう1つを試してみません!リソースはhttp経由でしか見つからないため、突然サイトが安全でなくなることは望ましくありません。これには、http経由でサイトにアクセスしている場合はJSだけに安全な接続を使用せず、https経由でアクセスしている場合は一部のリソースが安全でないという警告を表示しないという利点があります。

サイトがhttpからhttpsに切り替わる場合(たとえば、ログインしているユーザー/ログインしていないユーザー)、外部リソースにこのメソッド(//domain.tld/)を使用することをお勧めします。常にhttpを使用する場合は必要ありません。常にhttpsを使用する場合は必要ありません。同じプロトコルをURLにハードコーディングするだけでかまいませんが、害はありません。

ブラウザーは同じプロトコルを使用するため、相対URLを使用している場合は、内部リソースには必要ありません。

2
CJ Dennis