無断リンクを本気で許さないならApacheのSetEnvIf, Refererを使うべき

企業サイトでも個人サイトでも、「無断リンクは禁止。リンクを貼りたい場合は事前にメール等にてご連絡ください」という堅苦しい注意を書いてある場合があります。
これが学校とかのサイトならまだ分かります。公序良俗に反するところからリンクされたくはないしね(誰でもそうだけど)。
2004年くらいに作られたサイトだと、まだ無断リンク禁止みたいなことが大々的に書いてあったりします。それはなぜかというと、2004年にリニューアル(または制作)した際に、参考にしたよそのサイトで書いてあったり、それ以前に作られたサイトに書いてあったままの文章を流用したりするからです。
でも、本気でリンクを禁止したいわけではないはずです。「リンクはトップページで」というのも同じこと。
それが本気なら、ApacheのSetEnvIf, Refererを使うべきです。
これはリンク元を判断して、ファイル(フォルダ)単位でアクセス制限をかけることができます。
使い方としては、トップページを経由しないリンクでファイルにアクセスがあった場合に403エラーのページに飛ばす、または403をカスタマイズしてトップページにリンクを貼っておくとか、まぁ色々できます。
レンタルサーバの場合はサーバにもよりますが、htaccessに書ければ一番簡単です。

<Directory "/deny/directory/">
SetEnvIf Referer "^http://toppage.example.com" check
Order deny,allow
Deny from all
Allow from env=check
</Directory>

この記事には、カテゴリ web タグは がつけられています。