リファ元の絶対パス指定のCGI起動方法とは?

このQ&Aのポイント
  • PerlGateというアクセス制限のCGIを利用しています。昔のURLと現在のURLの2つが存在し、それぞれのURLから同じページ内容を表示する方法を教えてください。
  • リファ元が絶対パス指定のCGIを2つのページから起動する方法はありますか?YahooとGoogleからのアクセスで同じページ内容を表示するために、どう設定すれば良いでしょうか?
  • レンタルサーバの設定で昔のURLと現在のURLの2つがあり、リファ元を絶対パス指定するCGIを使っている場合、どのように設定すれば同じページ内容が表示されるでしょうか?現在、旧URL利用者には新URLへの移行を呼びかけていますが、その他のリファ元で404エラーを表示させたいです。
回答を見る
  • ベストアンサー

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

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

  • CGI
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • korolo
  • ベストアンサー率42% (39/92)
回答No.1

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

お礼

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

39call
質問者

補足

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

その他の回答 (1)

  • korolo
  • ベストアンサー率42% (39/92)
回答No.2

ANo.1です。 旧URLのcgi変更をアドバイスした目的(旧URLのperlgate.cgi)は、本来のperlgate.cgiを動作させるものではなく、単に新URLへ飛ばす為のcgiです。 ※変更アドバイスした内容の変数(少なくとも$newurlは、適切な新URLに)設定されましたか? ※従って、旧URLのサイトには必要なディレクトリと内容変更したperlgate.cgiだけ置いておけば良いという事です。 ◎39callさんのサイト内容が分かりませんので、私が勘違いをしているのかもしれませんが、Yahoo検索から旧URLのperlgate.cgiへアクセスされた方を、新URLへ自動転送させるというものです。

39call
質問者

お礼

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

関連するQ&A

  • cgiファイルのパス指定について

    http://www.kent-web.com/count/mgcount.html ここを見ながら今CGIカウンターの設置に挑戦しております。 環境はwindows7 32bit xammp v3.2.1をインストールしております。 一応簡単なCGIチェック動作はしており、動作する事は確認出来ております。 で、質問なのですが、 このような指示が上記サイトに記入してあったのですが、 public_html / index.html ... ここにカウンタを設置するものとする | | +-- mgcount / mgcount.cgi [705] ... カウンタ本体 | check.cgi [705] ... チェック用プログラム | init.cgi [604] ... 設定ファイル | +-- data / mpcount.dat [606] | +-- gif / 0.gif 1.gif .... 9.gif これってmgcountというフォルダとdataというフォルダとgifというフォルダは必要なのですよね? それとwindowsなのでパーミッションは関係ないですよね? それと、 #!/usr/local/bin/perl(プロバイダで定められたPerlへのパスを指定します) とありますが、わたしのxammpはc/xammp/perl/bin にperl.exeがあるので この場合のパスはどのように記載したら宜しいでしょうか? 宜しくお願いします。

    • ベストアンサー
    • CGI
  • フルパス指定に関して

    レンタルサーバーを借りており、あるプログラムの設定項目で「SSL使用のときはフルパス指定」とありサイトではSSLを使いたいので、どのアドレスを入れるのかわからなくなりご教授頂きたいです。 SSLを使わない場合、相対パスでは./shop.cgiでの設定となります。 私はSSLをつかいたいので、それをフルパス指定したいとします。 現在のサーバー上にあるサイトのフルパスが  /home/aaa/public_html/contents/shop.cgi IPアドレスからのURL  http://198.***.***.**/~aaa/contents/shop.cgi サイトのアドレスは以下を使ってるとします。  https://contents.bbb.com/shop.cgi (サブドメイン)  http://contents.bbb.com/shop.cgi (サブドメイン)  http://bbb.com/contents/shop.cgi  初歩的な質問で申し訳ありませんが、上記のどのアドレスを入れてもうまくいかないのでお判りになる方どうぞ教えてください。よろしくお願いします。

  • /から始まる絶対パスは どこで知ることができるのでしょうか

    yahooのジオプラスを申し込み、ドメインも取得したのですが CGIがなかなか利用できずに困っています。 こちらのhttp://www.kent-web.com/pwd/gate.html Kent Web様のCOSMO GATEというCGIを動作させたいのですが http://www.geocities.jp/ドメイン/というディレクトリの /から始まる絶対パスを記述しなければなりません。 分からないで悩んでいたところプロバイダ(つまりYahoo)のほうに 聞くしかないというアドバイスをたくさんいただきました。 Yahooのほうに問い合わせたところ、そのような問い合わせには 基本的に回答しないということで、とても困っています。 /から始まる絶対パスは、どのようにして調べるのでしょうか。 分かりきった質問だったとしたらお恥ずかしいことですが 申し訳ございません。 どうかよろしくお願いします。

  • リンク元を調べるCGIの作り方で悩んでいます

    はじめまして。Perl暦1ヶ月の者です。 自分のサイトのリンク元を調べるCGIを設置しようと思いますがどんな方法があるでしょうか。 私が調べた方法は、 1.CGI+SSIを利用 2.CGI+インラインフレームを利用 ですが、1.は各ページに <!--#exec cgi="○○.cgi"--> を入れてCGIを起動させるわけですが、全ページが.shtmlとなってしまい抵抗を感じます。.htm → .shtmlと変わることにより当分検索順位が下がるかもしれません。 それで2.を試しました。通常ページ page1.htm にインラインフレームで○○.cgiを埋め込み、ここでカウンターを表示させるとともにログを取得しようと思ったのです。しかしHTTP_REFERERが取得してくれるリンク元はあくまで「page1.htm」ですので役に立ちません。 最も一般的な方法はどのようなものでしょう?詳しい方よろしくお願いいたします。m(_"_)m *できればコードを丸ごと教えていただけると助かります。 ↓作成の条件です↓ ・一般ページはあくまで.htm にしたい。 ・レンタルサーバー屋はSSIは.shtmlと言っている。 ・リンク元一覧は一般ページには表示しない。 ・全ページの外部リンク元を知りたい。

    • ベストアンサー
    • Perl
  • ローカル環境内での絶対パス?

    こんにちは。 いつもお世話になっております。 すごい初歩的な質問でお恥ずかしいのですが ご指導頂けないでしょうか。 今、Apacheを使って、自宅のパソコン内で CGIの勉強用にローカルサーバを使用しています。 Cドライブから見たパスが下記で C:/Program Files/Apache Group/Apache2/htdocs/protect/menber/hoge.cgi IEなどで動作確認する時に打ち込むURLは http://localhost/protect/menber/hoge.cgi となる場合、 menber フォルダ内にある kame.cgi からみた hoge.cgi への絶対パスとは、どういった記述に するのが正しいのでしょうか? 環境は、 Apache2 Perl5 Win XP です。 どうかよろしくお願い申し上げます。

    • ベストアンサー
    • CGI
  • パールスクリプトを呼び出すときのパスの指定について

    わたしはあるインターネットのスクールに通っていたのですが パスについて頭が混乱しています。 CGIのコースのアクセスカウンターの授業で ディレクトリ構造が /usr/home/www/s1000000/cgi-bin/counter.pl となっているパールスクリプトをhtmlファイルのimgタグで呼び出すとき <img src="/usr/home/www/s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その1) と記述したらうまく動作せず、 <img src="/~s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その2) と訂正され、解決しました。 サーバのローカルルールでホームディレクトリのファイルは/~で呼びだせるように なっているようなのですが、それならば(その1)と(その2)は 同じことだと思うのです。 パスの相対指定はわかるのですが、絶対指定やurl指定がわかりません。 (その1)は絶対指定で(その2)はurl指定ということなのですか? (その1)と(その2)の違いは何ですか? なぜ(その1)では動作しないのですか? パスの根本的なところを知りたいです。 どなたか教えていただければ幸いです。

    • ベストアンサー
    • CGI
  • 絶対パスを指定する方法を教えてください。

     NINJA TOOLSのホームページレンタルスペースを借りて、ホームページをアップロードしました。それで、そのホームページ上のダウンロードボタンをクリックしたら、いっしょにアップロードした圧縮フォルダをダウンロードできるようにしたいと思っています。  手元にマニュアルがあって、その解説によると、「絶対パスを指定することで、必ずダウンロードできるように」なるのだそうです。  たとえば、忍者ホームページのアカウント名をabcd123,ドメイン名をefgh567.net だとすると、登録されているURLは http://abcd123.efg567.net/になります。  また、圧縮フォルダをakemi.zip とさせてください。すると、ホームページをメモ帳で開くと、ダウンロードボタンの部分のタグは次のように表示されます。  <ahref="akemi.zip">ダウンロード</a>  マニュアルの解説によると、この場合の絶対パスは次のようになります。  わたしのドメイン/akemi.zip そして、この「わたしのドメイン/akemi.zip」という絶対パスを、<ahref="akemi.zip">ダウンロード</a> の「akemi.zip」の部分に入れてください、とのことです。  わからないのは、次の2点です。  第1に、「わたしのドメイン」の部分に何を入れたら良いのか?という点です。アカウント名なのか、ドメイン名なのか、それとも登録されているURLなのか?実際やってみて、どれもうまくいきませんでした。  第2に、絶対パスを入れる際に、ダブルクオーテーションすなわち""をそのまま残しておくのか?も良くわかりませんでした。私は削除してやってみてダメでした。  以上、設例を勝手に設定してまことに恐縮ですが、よろしくお願いします。  なお、絶対パスを指定しなくてもダウンロードが可能な場合にまであえて指定する必要があるのか?という点についても、お願いします。  

  • CGIとプロバイダのつながりがいまいちわかりません。

    よろしくお願いします。 簡単なことだと思いますがいまいち飲み込めません。 あるCGIレンタルのサイトに >>「accview.cgi」・「accgate.cgi」・「accimg.cgi」・「jumper.cgi」の1行目のPerlのパスをプロバイダにあわせて書き換えてください。 メモ帳(Notepad.exe)などのテキストエディタで書き換えます。プロバイダの設置案内を見ると、「#!/usr/bin/perl」とか,「#!/usr/loca/bin/perl」とかいうような、Perlのパスが書いてあると思います。そのパスにあわせて1行目を書き換えます。不明の場合は、プロバイダのサポート窓口にお問い合わせください。  私が使っているプロバイダーはYAHOOですが、自分のホームページは某レンタルサーバーを100MB借りています。  これについてヤフーとは関係ないよう思えるのですが関係あるのでしょうか?  よくCGIを使用するならプロバイダに聞かないといけないといいますが、別にヤフーのジオシティーズを使うわけじゃないのに・・。  間違った解釈をしていると思いますのでご指摘ください!  よろしくお願いします。    

    • ベストアンサー
    • CGI
  • cron設定時のディレクトリの絶対パスについて

    cron設定時のディレクトリの絶対パスについて 楽メールproというメール配信cgiをcronを利用して 使いたいと思っています。 しかし、説明を見ても全く意味が分からず、 楽メールpro側もcronに関してはサーバーにより 違う為、サポートが出来ないとの事でした。 サーバー側も特定のツールについてのサポートは出来ないとの事で 困っています。 そこでお詳しい方がいましたら 教えて頂けると大変ありがたいです。 サーバーはさくらのレンタルサーバのスタンダードです。 こちらは楽メールproのクーロンの設定方法のページです。 http://www.raku-mail.com/manual/cron.html まず、ここのsend.cgiのdistributeディレクトリの絶対パスの部分は 具体的にはどうすれば良いのでしょうか? 絶対パスの調べ方は載っているのですが、絶対パスが例えばaaaだとしたら、 $myroot = '/home/ホームディレクトリ/distribute/'; の、どこにどの様に記入すれば良いのでしょうか? 次にCRONの設定の部分なのですが、 これは記載の事をやらなくても、 さくらのレンタルサーバのcronの設定をすれば良いのでしょうか? 教えて頂けると大変ありがたいです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • CGI
  • CGIを使ったパスによるダウンロード

    現在,Dreamweaver CS5.5 (Mac版)を使ってウェブサイトを作成しています(OSはMac OS X 10.6.8で,サーバーはロリポップのレンタルサーバー)。 パスによるダウンロードフォームを設置しようと思いまして,こちらのサイト↓ http://www.kent-web.com/pwd/login.html で無料CGI(アクセス制限・簡易タイプ)を入手しました。 教えて!gooでのアドバイスも受けて,何とか配布サイトの指示通りには無事に設置できたのですが,その先がうまくいきません。 上記無料CGIはログインフォームで,パスを入力してボタンをクリックすると特定のファイルに飛ぶというものなのですが, このリンク先にzipファイルを置いても,それだけではダウンロードできないものなのでしょうか。 具体的には, 上記CGIのうち,init.cgiに $cf{secfile} = 'zipファイルの相対パス(例えば,./private/secret.zip)'; と記述し,それをlogin.cgiに渡すようにしたのですが, それでは,パスを入力してボタンを押しても,大量の意味不明文字(文字化け)が出るだけで,zipがダウンロードされません。 ちなみに,zipファイルでなく,例えば画像ファイルにした場合には,ボタンを押すと,画像がブラウザ上で表示されます。 パスワードを入力し,ボタンを押すと,直接(途中にHTMLを噛ませたりしないで),設定しておいたzipファイルをダウンロードするようにしたいのですが,どなたかその方法をご存知の方がいらっしゃいましたら,ご教授願えると幸いです。

    • ベストアンサー
    • CGI