エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明

      2017/03/11

.htaccessをPHPで解説するシリーズ・直リンク禁止

 

直リンクを禁止する.htaccessをPHPで解説

 
コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応」で直リンク禁止の対応を .htaccessで行う方法を解説しました。
 
この解説記事を書くに当たって、勉強をするためにあちこちのサイトを見て .htaccessの理解をしようとしましたが、イマイチ理解が進みませんでした。
 
「何でこんなにどのサイトの説明も分かりにくいのだろう?」と考えていて思い至ったのは
 日本語で説明してあるから!
と言うことでした。
 
 
私は日本人ですし英語はまるで分からないので、日本語じゃなければ英語なら分かるのか?と言われても困りますが、プログラムの説明を日本語で書いても分かりやすくなるとは言えない、ということが分かりました。
 
そんなわけで、.htaccessの説明を、「日本語」ではなくプログラム言語の「PHP」に置き換えて説明してみることにしました。
 
だって、Webプログラマですからね。
置き換える言語は日本語よりも PHPの方がいいんじゃね?って。
自分で PHPに置き換えて見たら、.htaccessもすんなり理解できましたから!
 
 
ちなみに、あちこちサイトを見ましたけども、検索にヒットする記事はそこそこの数はあるわけですが、書いてある中身は元のどこかの記事を単にテキストの字面を変えただけというほぼコピーコンテンツもいっぱいあります。
そして、書いている本人は理解していないんじゃないかなぁって思える記事も多いので、実際の解説のバリエーションがそんなに多くないことも理解が進まない理由のひとつなんだろうなぁ、とも感じました。
 
実際問題として、もともとの記事にバグがあって正常に動かないのに、それをそのまま試しもせずに記事にしてるから、不具合もそのままになっている記事もよく見かけますからね。
 
 
ちなみに、直リンクを禁止する記事で、「SetEnvIf」にセットする値が「ShowOK」なのは、下記の All Aboutが元記事になっているんじゃないでしょうかね?
 http://allabout.co.jp/gm/gc/23915/3/
 
 


 

.htaccessで直リンクを禁止する設定・許可を指定する場合

 

 
 
コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応(指定したサイトからの直リンクを.htaccessで禁止する)」でも解説しましたが、直リンクに対して画像の表示を禁止する .htaccessは上記のように記述します。
 
この記述を .htaccessに記述し、ドキュメントルートに置けばサイト内の画像全てを対象にして直リンクを禁止することが出来ます。
 
 
で、上記の .htaccessの記述内容を解説していきます。
もともとの解説記事ではこれの説明を日本語で行ったわけですが、解説をしていて思うのは、不足はしていないものの .htaccessの仕組みが分かっていない方が理解するには足りないんだろうな、と感じるのです。
 
そんなわけで、ここではそれを PHPに置き換えて説明するという試みをしてみました。
 
 

.htaccessで直リンクを禁止する設定を PHPで説明・許可を指定する場合

 

SetEnvIf Referer "^http://blog\.s-giken\.net" OK

 

 
※「"^http://blog\.s-giken\.net"の部分は正規表現でのマッチングの処理ですので、単なる「==」ではなく「preg_match」の方が正確だとは思います(下記のような感じ)。
 

 
 

SetEnvIf Referer "^$" OK

 

 
そして、続きの行もこんな感じで、マッチしたら「$Env」に「OK」を代入していくと言う処理ですので、複数の条件を設定したい場合は単純に行を増やしていけばいいことが分かります。
 
 

allow from env=OK

 

 
ここでは、最初の処理で「$Env」に代入した値をチェックし、それによって許可するか、否かの判定をしているイメージです。
allowの部分は、.htaccessの処理として「許可する」と言う処理の部分ですので、PHPに置き換えようが内容に感じます。
 
また、「deny from all」で「deny(拒否)」を基準として設定していますので、「else」の場合は「deny」になると言う感じでしょうか。
 
 

.htaccessで直リンクを禁止する設定・拒否を指定する場合

 

 
今度は、拒否するサイトを指定する場合の設定を解説していきましょう。
 
 

.htaccessで直リンクを禁止する設定を PHPで説明・拒否を指定する場合

 

SetEnvIf Referer “^http://xxx\.xxx\.xxx” NG

 
 

 
処理の内容は前項の許可するサイトを指定する方法と同じです。
ただ、こちらでは拒否するサイトを指定するため「$Env」に代入する値を「NG」にしている程度です。
 
これについては、前項でも説明していますが、単なる代入する値ですので、「OK」のままでも何にも問題ありません。
 
 

deny from env=NG

 

 
この処理も許可するサイトを指定する方法と何の違いもありません。
「$Env」に代入している値が変わっていますので、IF文で聞く値も変わっている程度です。
 
 

.htaccessをPHPで解説するシリーズ・直リンク禁止のまとめ

 
.htaccessの処理を PHPに置き換えてみる試みはいかがでしたでしょうか?
PHPに書き直してみると .htaccessも全然難しくないことが分かってもらえたのではないでしょうか?
 
.htaccessは多様で、しかも強力な処理を構築することが出来ますので便利なのですが、いかんせん分かりやすく説明してくれているサイトがなかなかないため難しく感じてしまいますが、今後は他の処理も PHPなど他の言語に置き換えてみて解説をしていって見たいと思います。
 
こうご期待!

 - プログラミング・Web関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応

不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。

Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで「fatal: Authentication failed for ‘https://example.com/git_repositories/example.git/’」のエラーが出た場合の対処方法の一つ

Gitのリモートリポジトリにアクセスする際、Authentication failedのエラーが。しかし、ID、PASSが間違っているのではなく、リモートリポジトリのURLが間違っている場合もあるので再度確認を。

mod_pagespeedカスタマイズで高速化を詳細解説・Google謹製

mod_pagespeedをデフォルトのまま使っていませんか?mod_pagespeedはデフォルトのままでも速い!でも仕組みを理解し設定し直せばより速くなる!

FTPでダウンロード時にファイルが重複するため上書きしますか?と表示される問題

FTPでファイルをダウンロードする際に「ファイルが重複しています。上書きしますか?」というメッセージが出る場合がありますが、これの原因と対策、解決策の記事です。

X Serverへの引越しの注意点まとめ。ロリポップとの違いと対処方法 6事例

ロリポップからX Serverに引越し。ロリポップとX Serverの違いに注目することでX Serverの設定方法を明確にします。またX Serverならではの設定ポイントなども解説。

PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。

Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。

Webサイト公開時に重複コンテンツを排除する.htaccessのリダイレクトの設定のまとめ

サイトを公開する際にはURLの正規化は必須です。正規化とは何かを解説し、.htaccessに設定すべきリダイレクトの設定を具体的に説明します。

CentOS環境に ntpdをインストールして自動的に時刻を取得する設定にする
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする

VirtualBoxに構築した CentOSの環境の時計がずれているとき、ntpdをインストールし、時計を合わせる方法を解説。NTPサーバを指定する方法や ntpdを自動起動する設定も解説。

借りてはいけないレンタルサーバ実例4社・アルファメール・WEBアリーナ

餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、具体例 4サービスを例にこんなサーバはNGと紹介しています。

直リンクとは何か?直リンクとディープリンクの違いと著作権問題

直リンクは著作権違反なのか?議論の前にまず「直リンク」の意味を正しく理解しよう。直リンクは他のサイトの画像を読み込む、ディープリンクなど多様な意味がある。