Room技術系ネタをまとめていたブログ。カテゴリにこだわらず更新していこうかと思います。Apachehtaccessを用いることで、ファイルにアクセス制限をかけることが出来ます。今回目標とするのは「あるサービス内で色々な素材を使うが、その素材自体にはアクセス出来ないようにする」です。ベーシック認証などの話ではないのでご注意下さい。書いていますので結局どうしたら良いのかさっさと知りたい、という方は、記事の最後の方に飛んで下さい。素材とそのディレクトリにアクセス制限をかける方法としてそもそも、素材置き場をpublic_html以下ではないどこか別のディレクトリに置く.htaccessを利用してアクセス制限をかけるといったことが考えられました。前者が確実なのでしょうが、もろもろの都合により、どうしてもpublic_html以下に素材を置かなければいけないこともあるかと思います。いった場合もあるかと思ったので、今回は前者「.htaccessを利用してアクセス制限をかける」ということを試みました。今回はファイル構成が以下のようになっているとして話を進めます。素材置場(materialディレクトリ)以下の全てのファイル・ディレクトリへのアクセスを拒否したい場合は非常に簡単です。materialディレクトリに.htaccessファイルを作成し、以下のように記述します。allしかしこの場合、サービス内で素材を利用したい場合にも利用できなくなります。material_search.phpでの検索結果、素材を表示する際にも、アクセスできなくなってしまう、ということです。(自分の設定の問題かもしれませんが。)今回の目標としては、サービス内では素材を利用できるようにしたいので、このままではだめです。サービス内で素材を利用しつつ、素材へのアクセス制限をかけるそこで、.htaccessファイルを以下のように書き換えます。env=ShowOK1行目の意味ですが、参考サイトによると「SetEnvIf」とは、「ある条件が成立した場合に環境変数を設定する」という意味です。上記の場合は、Referer(参照元)に「http://hogehoge.com」という文字列が含まれていた場合に環境変数に「ShowOK」を設定するという意味になります。いうことだそうです(『「~」という文字列が』の部分のURLだけ書き換えています)。以上のようにすることで、例えば、外部サイトからリンクをたどってきたの場合は「http://hogehoge.com」の部分の値が変わるので、ShowOKとならず、また、素材へのURLを直接入力する場合は、Refererの値がないので、ShowOKとなりません。参考サイトで、URLを記述する際の注意点が挙げられています。」のように円記号(=バックスラッシュ)を前に加えて下さい。これは、正規表現という記述方法を使っているための仕様です。」(ハット)記号を加えて下さい。これらを省略しても動作はしますが、省略すると、リンク元ページに少し工夫をするだけでアクセス制限を突破されてしまいます。URLの先頭に「www」がある場合、「www」を省略しても同じページにアクセスできる場合があります。その場合は、両方のURLを記述しておきましょう。※許可したいURLが複数ある場合は、この行を複数回列挙します。いうわけで、長々となりましたが、以上のようにすることで、冒頭に上げた目標を達成することが出来ます。日)某電機メーカーで働く社内SE。趣味や興味あるものに関して、ちまちまブログにまとめています。自動広告が表示されない(未解決)【楽して資産運用】WealthNavi(ウェルスナビ)・トライオートFX/ETF(6週目結果報告)【楽して資産運用】WealthNavi(ウェルスナビ)・トライオートFX/ETF(5週目結果報告)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。