急いでいるので、できるだけ早急に知りたいです


A.htm に対してアクセスがあるとして、それが B.htm からのリンクでは
ない場合は B.htm を表示させたいですが、これを「 .htaccess 」で実現
する方法を教えてください

つまり、 A.htm を表示できるのは、 B.htm 内のリンクをクリックしたと
きだけ、ということを「 .htaccess 」で実現したいのです

なお、「 .htaccess 」をどこに置くのかも教えてください
B.htm と同じディレクトリなのか?それとも root( でしたっけ? )なの
か?

また、この手の参考になるページで、平易な言葉を多用するなど素人でも
解りやすいページを教えていただけると、ありがたいです

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/20 19:14:08
  • 終了:2006/08/22 19:37:36

回答(1件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692006/08/20 19:57:35

ポイント60pt

mod_rewrite が使える

A.htm B.htm が同じディレクトリにある

ブラウザがチャンと referer を返す(返さない場合もあるので)

という前提で、

RewriteEngine On
RewriteCond %{HTTP_REFERER} !B.htm
RewriteRule A.htm B.htm

を記述した .htaccess を A.htm と同じディレクトリへ置きます。

意味は、直前に見ていたページが B.htm でないなら、

A.htm を B.htm に書き換える

というものです。

残念ながら、動作確認は取れていません。

.htaccess は本家のも目を通しておくべきでしょうから

http://httpd.apache.org/docs/2.1/ja/howto/htaccess.html

こちらの方が易しいでしょうか

http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/

mod_rewrite については

http://www.net-newbie.com/trans/mod_rewrite.html

ゆっくりと読めば分ると思いますが、もう少し柔らかいのは

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

はどうでしょう。

id:watson

結果から言うと、リダイレクト?されているみたいですが、「 ファイル

が無い 」というメッセージがサーバーから返りました

詳しく言うと・・・

・ 質問の A.htm は、 cgi-bin フォルダ内の A/A.cgi です

・ 同じく B.htm は、 public_html フォルダ内の B/B.htm です

・ public_html は最上位フォルダで、 cgi-bin フォルダは public_html

フォルダの直下にあります

・ サーバーはレンタルですが、独自ドメインを取得しています

でもって、「 http://ドメイン名/ 」では「 http://実体のサーバー名

/public_html/ 」に「 URL フレーム転送 」する設定をしてあります

つまり、以下のようになります

A.cgi = http://ドメイン名/cgi-bin/A/A.cgi

B.htm = http://ドメイン名/B/B.htm

なお、 public_html フォルダの直下にある index.htm はフレームページ

になっていて、 B.htm はそのフレームの一つです

<FRAME src="B/B.htm" …省略…>

なので、以下のように記述しました

RewriteEngine On

RewriteCond %{HTTP_REFERER} !http://ドメイン名/B/B.htm

RewriteRule A.cgi http://ドメイン名/index.htm

でもって、 index.htm にはアクセスしているらしくて、フレームは表示

されます

ところが、全フレーム( と言っても 2 ページだけ )にて「 ファイルが無

い 」メッセージが表示されます

ひょっとして、 URL フレーム転送や index.htm がフレームページになっ

ていることが原因で、各フレームページのパスが変わってしまったのでしょ

うかね??

----------------------------------------------------------------

追記 : 8 月 22 日

末尾に、[ R ]オプションを付けることで解決しました

RewriteEngine On

RewriteCond %{HTTP_REFERER} !http://ドメイン名/B/B.htm

RewriteRule A.cgi http://ドメイン名/index.htm [R]

2006/08/22 19:34:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません