• 締切済み

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

hok212の回答

  • 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
質問者

補足

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

関連するQ&A

  • .htaccessの使い方を教えてください。

    こんばんは、はじめまして。 こちらには初投稿になります。 リンクをクリックした際、普段はAというHPが普通に表示され、特定の場合のみBというHPに リダイレクトさせたいと考えています。 .htaccessを使いたいのですが、色々なサイトを調べても私が行いたい内容のことが書かれて おらず、どうすればいいのかが分かりません。 C.co.jpというホストからアクセスがあった場合のみ http:/d/index.html に転送したいのですが、うまくいきません。 RewriteEngine on RewriteBase / RewriteCond %{REMOTE_ADDR} .C.co.jp RewriteRule .* http:/d/index.html と書いたのですが、どこか問題がありますでしょうか? また、逆にC.co.jp以外からアクセスがあった場合にBのHPにリダイレクトする方法も教えていただけると うれしいです。 ちなみに.htaccessの設置場所はAのHPのindexファイルがあるディレクトリです。 どうか、アドバイスをよろしくお願いいたします。

  • htaccessでリンク元を参照したい(直リンクを防止)

    PERLでは$ENV{'HTTP_REFERER'}でリンク元を参照する事ができますが、 これをhtaccessで参照する事はできるのでしょうか。 目的は、gifファイルやjpegファイルに特定のURLからのリンクのみアクセスできるようにしたいのです。 HTML表示では画像が表示されるが、画像への直接のアクセスはできないようにしたいのです。 (いわゆる直リンクの防止) たいへん困っております。詳しい方いらっしゃいましたら、よろしくお願いいたします。

  • phpとhtaccessのリダイレクト

    aというフォルダの中のhtmファイルからphpファイルを通して bというフォルダの中のファイルにアクセスさせています。 htmファイルからのリンクはxxx.php?file=../b/xxx.xxxのようにしています。 bのフォルダがサーバ容量を圧迫しているのでbのフォルダを読み込むときだけ別サーバから読み込むよう.htaccessでリダイレクトを Redirect permanent b/ http://xxxxx.com/b/ のようにしました。 直接bのフォルダの中を読み込めばリダイレクトされるのですが、aのフォルダからphpを通してbのフォルダにアクセスするとリダイレクトされません。 どのようにすれば動作させることができるでしょうか?

    • 締切済み
    • PHP
  • .htaccessでサイトの引っ越し

    .htaccessでサイトの引っ越し サーバーとドメインの変更がり引っ越しをします。 調べてみたところ.htaccessでリダイレクトするべきとあったのですが書き方について質問です。 サイトのURLをhoge.co.jpからexsample.co.jpに変更します。 この場合の書き方ですが下記の一行でいいのでしょうか? RedirectMatch 301.* http://www.exsample.co.jp/ しかし上記の場合どんなURLであっても全てを新しいURLにリダイレクトしますよね? 階層やファイル名は全く同じになるので可能であれば実現したい事は・・・ ・旧ドメイン/aaa.htmlにアクセスがあれば新ドメイン/aaa.htmlにリダイレクト ・旧ドメイン/bbb.htmlにアクセスがあれば新ドメイン/bbb.htmlにリダイレクト ・旧ドメイン/ccc.htmlにアクセスがあれば新ドメイン/ccc.htmlにリダイレクト と全てをトップページにリダイレクトするよりはそれぞれのページにリダイレクトしてやる方が親切かと思ったのですがどのように書けばいいでしょうか?

    • ベストアンサー
    • HTML
  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

  • .htaccessを使いエラーが起きたら飛ばす

    Apacheで.htaccessを使いアクセス制限をしようとしています。 そして403エラーが起きたら指定のファイルにリダイレクトするというのを試みているのですがうまくいきせん。 問題点を絞るべくなるべく簡単にしてみました。 a.phpファイル (http://xxx.yyy.co.jp/ に存在します) <?php print("a"); error_log("a"); ?> b.phpファイル (a.phpと同様にhttp://xxx.yyy.co.jp/ に存在します) <?php print("b"); error_log("b"); ?> .htaccessファイル ErrorDocument 403 http://xxx.yyy.co.jp/b.php deny from all <Files ~ "\.(html|php)$"> allow from all </Files> この.htaccessの意図は拡張子がhtmlとphpのファイルだけにアクセスを許可します。 そしてそれ以外でアクセスしてきて403エラー(forbidden)が出た場合b.phpにリダイレクトしようとしています。(話を簡単にするため他のエラーについては省略します) 問題が出る流れ 1:まずブラウザでhttp://xxx.yyy.co.jp/a.phpにアクセスします。 2:なぜか ErrorDocument 403 に引っかかり http://xxx.yyy.co.jp/b.php に飛んでしまいます。 もちろんこのとき http://xxx.yyy.co.jp/ に a.php はちゃんと存在しています。 よって「ErrorDocument 403 http://xxx.yyy.co.jp/b.php」をまるごと.htaccessから削除してもう一度アクセスしても当然403エラーは出ません。 ちなみに本当にエラーだった場合の処理はうまくいっていて、存在しないファイルで例えば下記のようなURLでアクセスをした場合は正しく http://xxx.yyy.co.jp/b.php に飛びます。 http://xxx.yyy.co.jp/a.ccc 問題は何故エラーでもないのにErrorDocument 403で飛んでしまうのかです。 やはり.htaccessの設定の仕方が悪いのでしょうか。

    • ベストアンサー
    • PHP
  • cookieとhtaccessをつかったページ移行

    cookieとhtaccessをつかったページ移行を考えております。 内容ですが、 http://www.abc.oo/abc/aaa.php?user_id=5 へアクセスした際に htaccessで  http://www.abc.oo/cookie.php へリダイレクトさせ、 クッキーが有効な場合は http://www.abc.oo/abc/aaa.php?user_id=5へリダイレクト クッキーが無効の場合は http://www.abc.oo/555.html というURLを表示させ、 555.html ファイル内に 進むボタンをつけ http://www.abc.oo/abc/aaa.php?user_id=5へのリンクをつけたいと 思っております。 cookie.phpでクッキーを取得することは出来たのですが、 どのようにして、?user_id=5 の部分のURLを持ちまわるのかが 分かりません。 どなたかお分かりになられる方、ご教授お願いできませんでしょうか? よろしくお願いいたします。

  • 「.htaccess」に関して質問です。

    「.htaccess」に関して質問です。 アクセス制限とリダイレクトを同時にかけて 自分はパスワードを入力してサイト内を見る事ができるが 一般の閲覧者はリダイレクト先のページに飛ばす…ということは出来ますか? 今のところ、アクセス制限画面が出ずにリダイレクトされてしまい、 自分もサイト内を見られない状態です(当然かもしれませんが…)。 目的はサーバー移転です。 さる事情により旧サーバーは解約済み 新サーバーは空っぽで、 URLは既に新サーバーに繋がっています。 このままだとサイト構築の一部始終を一般の方々に見られてしまいます。 ちなみにショッピングサイトなので、 作業中は絶対見られるわけにいかないです。 どなたかヒントをいただけないでしょうか? 当方、「.htaccess」は初めてです。 どうぞよろしくお願いします。

  • htaccessで静的→動的処理、動的→静的301

    例えば・・・ 以下の処理(【1】と【2】)を.htaccess内で処理したいです。 【1】 http://example.com/1.html ↓ http://example.com/kkk.cgi?mode=main&cno=1 ------------------ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([0-9]+)\.html$ kkk.cgi?mode=main&cno=$1 [L] ------------------ 上記で変換は出来るのですが、これだと静的URLと動的URLで「同じコンテンツが表示(重複ページ扱い=コピーページ扱い)」されます。 やりたいことは、CGIにアクセスすると「301リダイレクトで静的ページを表示する」という仕様にしたいと考えております。尚、パラメータ無しの直接アクセス(kkk.cgi)は、同フォルダのindex.htmlに301リダイレクトできれば最高です。 【2】 http://example.com/kkk.cgi?mode=main&cno=1 ↓301リダイレクト http://example.com/1.html ------------------ RewriteCond %{QUERY_STRING} ^mode=main&cno=(\d+)$ RewriteRule ^kkk\.cgi$ %1\.html? [R=301,L] ------------------ しかし【1】と【2】の処理を同時に行うとループとなります。phpなどを一切使わず、.htaccessの記述だけでこの問題をクリアできる方、何卒ご指導お願いいたします。

  • .htaccessを使って、特定idをリダイレクト

    運営中のサイトで、.htaccessを利用してアクセス制限をしています。 特定のID/Passを入力したユーザーのみリダイレクトし、別のページを見せたいのですが、.htaccessに何か書き加える形で解決することはできますでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML