dポイントプレゼントキャンペーン実施中!

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

A 回答 (2件)

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";
-----------------------------ここまで↑

この回答への補足

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

補足日時:2008/04/24 20:00
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/24 18:56

ANo.1です。



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

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

2度目のご回答、ありがとうございます。
ご提案内容を見ていて「新掲載ページに飛ばす」という発想がなかったことに気づきました。
CGIを仕掛けたページはトップ以下のページですので、トップや他のページからこのページへのリンク先を絶対パスに変更することで解消できてしまいました。
お手数をおかけしました。

お礼日時:2008/04/25 20:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!