人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

●質問者: watson
●カテゴリ:インターネット ウェブ制作
✍キーワード:.htaccess root アクセス クリック ディレクトリ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tezcello
●60ポイント

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

はどうでしょう。

◎質問者からの返答

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

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

詳しく言うと・・・

・ 質問の 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]

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ