.htaccessファイルをuploadsフォルダ内に入れてファイル直接アクセスの禁止制限をかける。
サイト内のリンクからのアクセスはOK
.htaccessの記述
SetEnvIf Referer "^https://hogehoge.co.jp" ShowOK
order deny,allow
deny from all
allow from env=ShowOK
特定のPDFファイルのみ禁止
例は、_memberがファイル名に付くPDFファイルのみ禁止
URLはhttpとhttps両方の場合。httpsにリダイレクトさせている場合はhttpsだけでよい
SetEnvIf Referer "^http://hogehoge.com" mysite
SetEnvIf Referer "^https://hogehoge.com" mysite
<Files ~ "_member\.(pdf)$">
order deny,allow
deny from all
allow from env=mysite
</Files>
| ~ |
パターンマッチであるという意味です。「=」でないことに注意してください。「~」より右側に記述したルールにマッチしたファイルを適応するということです。 |
| ^ |
ファイル名の先頭であることを指示します。たとえば、 と記述すると、ファイル名のどこかに「access」という文字列が入っていれば、OKとなります。しかし、 と記述すると、ファイル名の先頭が「access」であるファイルのみが適応されます。 |
| $ |
ファイル名の最後であることを指示します。たとえば、と記述すると、ファイル名の最後が「access」となっているファイルのみが適応されます。したがって、「access.log」のようなファイル名には適用されません。 |
| * |
ワイルドカードです |
| ? |
一文字ワイルドカードです。 |
| \ |
「.」「\」「|」「$」のような記号文字は、指示子内では、特別な意味を持ってしまいます。したがって、このような文字を純粋に指定したい場合には、その文字の効果を無効にするために「\」を記述します。たとえば、と記述すると、「$」はファイル名の最後という指示を持った記号ですので、純粋に「access$」というファイル名に適応できません。この場合には、「$」の効果を無効にするために、「\」を前に入れて を記述します。 |
| (foo|bar) |
括弧内に、「|」で区切って記述すると、その中に記述された文字列のいづれかという意味となります。この場合には、「foo」もしくは「bar」という意味となります。 |
1.「SetEnvIf」
| [URL] |
リファラ(Referer)の条件を正規表現で指定します。
「"^http://www\.example\.jp"」を指定すると、アクセス元URLが「http://www.example.jp」で始まっているを意味します。
|
| [結果] |
リファラ(Referer)の条件に該当するときに結果が設定されます。 設定された結果は「許可(allow)」や「拒否(deny)」の判定に利用できます。
|
2.「order」
許可(allow)と拒否(deny)の判定順を指定します
例えば、「order deny,allow」の場合は、「拒否(deny)」に該当したら「許可(allow)」を判定するするため、「許可(allow)」が優先となります。
「order allow,deny」は、許可(allow)→拒否(deny)の順に判定することで、拒否を設定
「order deny,allow」は、拒否(deny)→許可(allow)の順に判定することで、許可を設定
3.「allow」
許可(allow)の条件を指定します
「allow from all」は、すべて許可を表します
「特定アクセスを拒否」する設定の場合は、「order allow,deny」を指定するため「allow from all」で一旦すべて許可を指定し、その後に拒否(deny)を指定します。
4.「deny」
拒否(deny)の条件を指定します
「deny from all」は、すべて拒否を表します
「特定アクセスを許可」する設定の場合は、「order deny,allow」を指定するため「deny from all」で一旦すべて拒否を指定し、その後に許可(allow)を指定します。
5.結果判定の指定方法
判定する[結果]は、「from」の後に「env=[結果]」で指定します。
「allow from env=[結果]」の場合、リファラ(Referer)の条件に該当する場合は「許可」
「deny from env=[結果]」の場合、リファラ(Referer)の条件に該当する場合は「拒否」