• ベストアンサー
  • 困ってます

リファ元が絶対パス指定のCGIを2つのページから起動するには?

  • 質問No.3970990
  • 閲覧数69
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 56% (53/94)

PerlGateというアクセス制限のCGIを利用しています。
これはリファ元を絶対パス指定するのですが、レンタルサーバの設定で昔のURLと現在のURLの2つが存在し、Yahooでは旧URL、Googleでは現URLがヒットするため、「どちらのURLでも同じページ内容を表示しながらURLが異なる」という状態になっています。
そこで、リファ元:新 or 旧 →CGI起動、以外→404 のように設定することはできるでしょうか?
取りあえず、今は旧URL利用者には新URLで入り直してもらうようアナウンスはしていますが、Yahooから来る方が多いので、できればなんとかしたいので、宜しくお願いします。
(手引きがあれば設定はなんとかできますが、perlはまったく分からないので...)

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 42% (39/92)

PerlGateの改造より、旧URLへのアクセスを新URLへ自動転送させた方が手っ取り早いと思います。

旧URLのperlgate.cgiを下記内容にそっくり変更して下さい。
(下記をまるごとコピーしてテキストエディタに貼付け、ファイル名「perlgate.cgi」で保存→旧URLのperlgate.cgiへ上書き)

-----------------------------ここから↓
#!/usr/local/bin/perl

##### 転送先のURL
$newurl = 'http://xxxxxxxxxx/xxxxxx/perlgate.cgi';

##### タイトル
$title = '自動転送';

##### 背景色・文字色等の設定
$body = '<BODY BGCOLOR="#FFFFFF" TEXT="#000000">';

##### 自動転送する待ち時間
$wait = '1';

##### 転送画面のコメント
$comment = '○○○○の入口は、移転しました。';

##### コピーライツ表示等
$copyright = 'Copyright &copy; 2008 ○○○○ All rights reserved.';

########## ↑ 設定はここまで ↑ ##########


#------------------------------#
# ここから下が転送画面の表示。 #
#------------------------------#

print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE>$title</TITLE>\n</HEAD>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
print "<meta http-equiv=\"refresh\"content=\"$wait; url=$newurl\">\n";
print "</HEAD>\n";
print "$body\n";
print "<br><br><br><br><br>\n<center>\n";
print "<H3>$comment</H3>\n<br>\n";
print "<P>自動転送しない場合は、<a href=\"$newurl\">こちら</a>へ</P>\n";
print "<br><br>\n";
print "<P>$copyright</P>\n</center>\n";
print "</BODY>\n</HTML>\n";
-----------------------------ここまで↑
補足コメント
39call

お礼率 56% (53/94)

新旧どちらのURLも掲載ページの実データは同じもの(text.html)で、perlgate.cgiをセットしたところを教えていただいたcgiに変えたところ、
新URLからは問題なくきちんとperlgateを呼び出せるのですが、旧URLだと教えていただいたcgiは動くのですが、そのあとperlgate.cgiを読み込む段階で「404」になってしまいます。
やはり、旧URLの場合新URLを読み込んでからでないとダメなようです。
投稿日時:2008/04/24 20:00
お礼コメント
39call

お礼率 56% (53/94)

ありがとうございます。
つまり、掲載ページからperlgateを起動するのではなく、一旦別のページをCGIで作って、そこからperlgateを起動する形にするわけですね。
試してみます。
投稿日時:2008/04/24 18:56

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 42% (39/92)

ANo.1です。

旧URLのcgi変更をアドバイスした目的(旧URLのperlgate.cgi)は、本来のperlgate.cgiを動作させるものではなく、単に新URLへ飛ばす為のcgiです。
※変更アドバイスした内容の変数(少なくとも$newurlは、適切な新URLに)設定されましたか?
※従って、旧URLのサイトには必要なディレクトリと内容変更したperlgate.cgiだけ置いておけば良いという事です。

◎39callさんのサイト内容が分かりませんので、私が勘違いをしているのかもしれませんが、Yahoo検索から旧URLのperlgate.cgiへアクセスされた方を、新URLへ自動転送させるというものです。
お礼コメント
39call

お礼率 56% (53/94)

2度目のご回答、ありがとうございます。
ご提案内容を見ていて「新掲載ページに飛ばす」という発想がなかったことに気づきました。
CGIを仕掛けたページはトップ以下のページですので、トップや他のページからこのページへのリンク先を絶対パスに変更することで解消できてしまいました。
お手数をおかけしました。
投稿日時:2008/04/25 20:22
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ