直リンク禁止、ディープリンク禁止、無断リンク禁止、と言っても無駄

「直リンクは禁止します」・「ディープリンクはしないで」・「無断リンク厳禁」などと表記しているウェブサイトを見かけることがあります。禁止しようと思うことは自由ですが、「禁止します」と宣言しただけでは効果はありません。誰でも自由にリンクできるのがウェブの仕様ですから、「リンクは禁止します」と言ったところで強制力はないからです。どうしてもリンクを禁止したい場合には、技術的な手段でアクセス制限を施すしかありません。

たいていのウェブサイトは、人々に見てもらうために公開しているでしょう。その場合、外部サイトからリンクされることは歓迎こそすれ拒否するものではありません。しかし、以下に挙げるいくつかの場合にはリンクを拒否せざるを得ないこともあるかもしれません。

そこで今回は、外部サイトからのリンクを技術的に制限する方法をご紹介いたします。

直リンク(直接参照)を禁止したいケースの例

直リンクとは?
直リンクとは、ウェブ上に存在する画像などのオブジェクトを、他のウェブサイト上に直接表示することです。例えば、http://exapmple.com/image.png というURLで公開している画像があるとき、以下のようなHTMLソースを書けば、他のウェブサイト内にあるページ上にもこの画像を表示できます。
<img src="http://exapmple.com/image.png" alt="他所の画像">
この方法を使うと、他所のウェブサイトに存在する画像を、あたかも自サイト内に存在するかのように表示することができてしまいます。

直リンクを拒否したいケースの例
このような直リンクは、例えば以下のような場合だと阻止したいこともあるでしょう。

  • 画像素材を配布しているが、外部サイトから直接参照されることが多くてサーバに余計な負荷がかかってしまう。または、実際に負荷が掛かっているかどうかはともかく、その可能性を減らしておきたい。そのため、画像だけは外部サイトから直接参照できないようにしたい。
  • イラストや写真を公開しているが、イラストや写真はすべて自サイト上でだけ閲覧して欲しい。他サイトのページに画像を直接貼り付けられて、意図しないレイアウトやデザインで画像を見られたくない。
  • 画像に関する説明文や著作権表記などは画像そのものには含まれていないため、画像だけが単独で他サイトのページに表示されると困る。

上記のような場合には、技術的に直リンクを制限すると良いでしょう。

ディープリンク(深い階層のページへのリンク)を禁止したいケースの例

ディープリンクとは?
ディープリンクとは、ウェブサイトのトップページ以外のページへリンクすることです。例えばウェブサイトのURLが http://www.example.com/ の場合は、このURL以外の http://www.example.com/inside/deep/page.html などにリンクすることを言います。リンク先はページ(HTML)とは限らず、画像などのオブジェクトに直接リンクする場合も該当します。

ディープリンクを拒否したいケースの例
このようなディープリンクは、例えば以下のような場合だと阻止したいこともあるでしょう。

  • 前処理なく直接実行されてしまうと困る何らかのスクリプトが走る中間ページ。
  • インラインフレーム内で表示されることを前提にして作られたページ。
  • クイズの答えなど、直前のページを経ずには見て欲しくないコンテンツが掲載されたページ。
  • 年齢制限のあるコンテンツなど、何らかの事前チェックを経ずには表示させたくないページ。
  • HTML以外のファイル。例えば、画像に関する説明文や著作権表記は画像そのものには含まれていないため、(画像を表示しているページではなく)画像ファイルそのものへの直接リンクは防ぎたい場合など。

上記のような場合には、技術的にディープリンクを制限すると良いかもしれません。ただし、技術的にディープリンクを制限したからといって、そのページへの直接アクセスが防げるわけではない点には注意が必要です。ブラウザのアドレス欄にユーザが直接URLを打てば、直接そのページにアクセスすることは可能です。

補足/トップページにだけリンクしてほしい?
ウェブサイトのアクセス数を向上させたいと思うなら、ディープリンクは禁止しないことをお勧めいたします。何らかの情報を探しているアクセス者は、最初に見たページに望みの情報が掲載されていなければ、さっさと別のサイトへ行ってしまう可能性があります。せっかく得られたアクセス者を逃さないためには、ディープリンクを積極的に受け入れる方が望ましいでしょう。

なお、あらゆるディープリンクを完全に拒否してしまうと、検索サイトの検索結果ページからのアクセスもできなくなるので注意が必要です。GoogleやYahoo!などのドメインを1つ1つ登録しておくことでそれらの検索サイトからのアクセスを許可することは可能ですが、登録しなかったドメインからのアクセスはすべて拒否されてしまいます。

無断リンクを拒否したい? →リンク制限よりアクセス認証の方が望ましい

リンクに許可など必要がないのがウェブの仕様なので、そもそも「無断リンク」という表現が適切ではなさそうです。許可なくリンクされるのを防ぎたいと思う場合は、リンクを拒否するのではなくアクセス認証機能を使う方が良いでしょう。

特定の人々にだけ見せるサイトなんだ!……という場合
この場合は、IDとパスワードによるアクセス認証機能を使いましょう。「基本認証(BASIC認証)」という方法を使えば、簡単に認証機能を加えられます。このような認証機能を使わない限り、広く公開されたウェブ上で「特定の人々以外には閲覧できないようにする」ことは不可能です。基本認証の方法は、記事「基本認証でアクセス制限をかける方法」でご紹介していますのでご参照下さい。

なお、IDとパスワードではなく、閲覧者のIPアドレスを使ってアクセス制限を施すこともできます。同一社内からのアクセスだけを許可したい場合などに活用できます。IPアドレスやホスト名を使ったアクセス制限の方法は、記事「ログインページに他人がアクセスするのを拒否する方法」でも解説していますのでご参照下さい。

あらゆるリンクを許可制にして、無断リンクを禁止したい?
今回ご紹介する方法を使えば、リンクを許可するウェブサイトを1つずつ登録していく方法で、登録されていないサイトからのリンクを拒否する(エラーを表示する)ことができます。しかし、中身を読む方法がなくなるわけではありません。ユーザがブラウザのアドレス欄にURLを打てば表示できます。リンクを許可制にしたいと思うほど中身を見せたくないのであれば、(IDとパスワードを使うなどの)アクセス認証機能を活用する方が適しているでしょう。

直リンクやディープリンクを阻止する方法

本記事でご紹介する方法は、ある特定のファイル(画像やHTMLなど)を、外部サイトから直接参照されたりリンクされたりしないようにする方法として、そのようなリンクをされてもエラーメッセージを表示して閲覧できなくする方法です。

それでは次のページから、直リンクやディープリンクなどを技術的に制限する方法をご紹介いたします。