.htaccessを使用したURLパラメータによるアクセス制限
2020.07.20 Posted by Coding_team
こんにちは、クリエイターズメモです。
皆さん、「アプリやメール等でしか見せたく無い!」ってページがあるときなどどうしていますか?
今回、たまたま調べる機会がありましたので備忘録がてら記事にしたいと思います。
方法ですが、アプリやメールだと直リンクになってしまうので、リファラーなどは使えそうにないですよね。
どうやればできるかな・・・と考えてみた結果、URLパラメータで振り分ければいけそう! と思いついたので実際に試してみました。
.htaccessを使用してURLパラメータによるアクセス制限をしてみました。
.htaccessとは、「Apache(アパッチ)」というソフトウェアを使用しているWebサーバーの設定を制御するファイルです。詳細な説明はここでは行いません。
まずは作成した以下のDEMOをご覧ください。
特定のパラメータがついている時のみアクセスが可能なページを想定しています。
・パラメータなしでアクセス
https://www.weblab.co.jp/demo/2007/
・間違ったパラメータでアクセス
https://www.weblab.co.jp/demo/2007/?app=xxx
・正しいパラメータでアクセス
https://www.weblab.co.jp/demo/2007/?app=true
正しいパラメータでアクセスしたときのみ正常に表示されていることを確認できるかと思います。
以下が、.htaccessの記述となります。
1 2 3 4 5 6 7 8 9 10 11 12 |
#URL書き換えを可能にする RewriteEngine on #正規表現によるパラメータappの値があるかマッチング RewriteCond %{QUERY_STRING} (^|&)app=([^&]+)($|&) #QUERYにappの値を格納 RewriteRule .* - [E=QUERY:%2] #拡張子htmlでQUERYの値がtrue以外なら403 RewriteCond %{REQUEST_FILENAME} ^(.*)\.(html)$ [NC] RewriteCond %{ENV:QUERY} !^true$ RewriteRule .* - [F] |
※サーバーによって記述方法が異なることがあります。
以下の記事を参考にさせて頂きました。
・Qiita – [Apache]mod_rewireにおけるクエリ文字列の切り出し方法
https://qiita.com/hkusu/items/53fe86ee0ed52fd4978d
正しいパラメータを持ったURLをアプリやメールにのみ記載してあげれば、そこからのみアクセスできるかと思います。
もしかしたら他に良い方法もあるかもしれませんが、そこは置いといて・・・こんな方法もあるよと思って頂けたら幸いです。
以上、クリエイターズメモでした。
関連記事こちらの記事も合わせてどうぞ。