• 締切済み

htaccessでの参照元による条件分岐?について

ワードプレスにてwebページを作成している初心者です。 会員向けページとまではいかないのですが、前ページのリンクボタンからのみ閲覧可能、それ以外からのアクセス(直接URLを入力、ブックマークからのアクセス)は前ページへリダイレクトさせるようhtaccessを利用したいのですがうまくいきません。 例)ページA(リンクボタン設置ページ)からのアクセスはページBを表示(許可   その他(URL直接入力等)からのアクセスはページAを表示(リダイレクト ページAからのみページBを表示させることはできたのですが、それ以外からのアクセスに対しては ページAへリダイレクトさせる方法が分かりません。 htaccessをどのように書いたら良いのかご教示ください。 初心者で質問自体も稚拙なものとなっておりますがご教示いただけますと幸いです。

みんなの回答

回答No.2

#1さんの回答を実はちょっと待ってた。 そうなんです。リファラーはブラウザによって動作しないことと、 簡単にねつ造や、固定できるので、そうするとサイト自体が機能しなくなる 恐れがあるのです。 別案としてはクッキーなんですが、こちらもクッキーもブラウザによって 動作しないのです。 A.特定のページ(クッキーをセット) B.それ以外のページは、クッキーがないとき、リダイレクトでAへ でも同じ結果なのですが。 後はPOST受け渡し方式。 Aでのページ遷移で、POSTを渡し、それがないときAへ戻す。 しかし、これは全部のボタンをPOSTにしないといけないので、面倒 結論として、今の作り方を変えるほうがずっと効率的ではないだろうか? になるので、回答控えてたんです。この件。

villageit
質問者

補足

ご回答ありがとうございます。 やはりリファラを利用しての操作はお勧めできないとのことですね。。。 POSTの受け渡し、、、ボタン自体の数は少数なので調べてトライしてみたいと思います。

  • hok212
  • ベストアンサー率66% (100/150)
回答No.1

mod_rewrite を使えば出来るはずです。 =============== .htaccess に記載 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?hoge\.com/test\.html [NC] RewriteRule ^.*$ http://hoge.com/test.html [R=302,L] 上記の.htaccessをアクセスを制限させるディレクトリに設置します。 ※当然ながら正しいリンク元(このサンプルではtest.html)と同じディレクトリに設置してはいけません。 ポイントは RewriteCond で指定したリファラURL直前の「!」です。 これは否定を意味し、リファラが「!」に続くURLではなかった場合、RewriteRule で指定したURLにリダイレクトする振る舞いになります。 なお、ご存知とは思いますが、リファラはすべての端末が送り出すものではありませんので、今回のようにリファラを利用して何かを行うという操作はお勧めできるものではありません。

villageit
質問者

補足

ご回答ありがとうございます。 リファラを利用しての操作はお勧めできないとのことですが他にはどのような方法がございますでしょうか? お手数をお掛けして申し訳ありませんが、他の方法もご教示いただけますと幸いです。