さくらレンタルサーバー ライトプランをマルチドメイン(現在2つのドメイン)で利用しています。


機能一覧では、Perlが動作すると記載されていました。

このサーバーに、下記リンクでダウンロードした、cgiを入れたのですが、動きません。(500 internal server error)

CGI名=雅SEO相互リンク
http://tool.miyabi-seo.com/docs/freeware/seolink.htm

属性の変更や、各種パスの設定等は、間違ってないと思うのですが・・

もしかして、マルチドメインだとcgiへのパスの書き方が、異なるのでしょうか?

または、サーバーにアップロードしたCGIファイルの拡張子は、"pl"なのですが、
さくらインターネットの、マニュアルを見ると、”cgi拡張子はcgi”と記載されていたので、
アップロードするファイルの拡張子をcgiに変更しなければいけないのでしょうか?

アドバイスいただけると助かります。

どうぞよろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:2009/01/02 21:32:31
  • 終了:2009/01/07 13:40:50

ベストアンサー

id:rouge_2008 No.7

rouge_2008回答回数594ベストアンサー獲得回数3512009/01/05 16:23:20

ポイント50pt

解決して良かったです。

CGIで生成されるほぼすべてのHTMLタグにクラス名が指定されていますので、CSSファイルでも自由度の高いカスタマイズが可能だと思います。

※どのタグにどのクラス名が指定されているかは、雅SEO相互リンクのどのページ(※規約とリンク方法以外)でも大丈夫ですが、「表示」→「ソース」などでHTMLソースを表示して確認してみてください。


もちろんCGI(index.pl)を編集して、任意の位置に直接HTMLタグを追加することも出来ます。

※タイトル表示部やカテゴリー表示部、著作権表示があるフッター部分に追加したい場合は、992行目以降に記述すると良いです。

headタグ内などbodyの開始タグより上の部分は、Display.cgiを編集します。(「project」→「Output」フォルダ内にあります。)

私も良く分かりませんが、print文で記述されている所には、同じようにprint文で記述すると良いです。

print "<div class=\"header\">\n";

上記のように1行ずつ「print "HTMLタグなど表示したいテキスト\n";」の形式記述します。

※表示したいHTMLタグに「"」(ダブルクォーテーション)が含まれる場合、その直前に半角の「¥」を記述します。

http://cocohome.hp.infoseek.co.jp/cocohome/l_print.html

http://miis.jp/perl_basic/perl3.html

その他の回答(6件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/01/02 21:59:35

ポイント10pt

CGI・PHPの設置に関わるサーバ情報一覧」(公式サイト)によると、Perlの拡張子は ".cgi" でなければいけないようです。


".htaccess" に以下のような設定をすることで、pl を Perl 実行にすることができるかもしれません。

AddType apprication/x-httpd-cgi .pl
id:nobu55

早速試してみたいと思います。ありがとうございます。少しでもヒントをいただけるとこころ強いです。

引き続き、他の方のご回答お待ちしております。

2009/01/02 22:17:14
id:koujirou6218 No.2

koujirou回答回数597ベストアンサー獲得回数472009/01/02 22:51:11

ポイント10pt

.htaccessを開きます。

Options FollowSymLinks +ExecCGI +Includes -Indexes +Multiviews


#Options FollowSymLinks +ExecCGI +Includes -Indexes +Multiviews

のようにコメントアウトすると実行できます。

http://www.pnavi.org/test/

id:nobu55

ありがとうございます。

現在、いただいた情報を元に、挑戦しています。

ディレクトリーの中には、別途index.htmlのようなファイルを作成しなくても良いのですよね?

2009/01/02 23:38:39
id:skipsstep No.3

skipsstep回答回数161ベストアンサー獲得回数32009/01/03 04:19:33

拡張子をcgiに変更する方が簡単です。

id:nobu55

拡張子をCGIに変更しましたがサーバーエラーが出てしまい、何も解決しませんでした。

>回答2

>koujirou6218さん

アドバイスいただいたように

Options FollowSymLinks +ExecCGI +Includes -Indexes +Multiviews

#Options FollowSymLinks +ExecCGI +Includes -Indexes +Multiviews

とコメントアウトすると

おかげさまでトップページは表示できるようになったのですが、

トップページに作成されたリンクが、全てリンク切れになってしまいます。

トップページ以下のページが作成されていない、もしくは、どこかでパスの設定を誤っているのでしょうか?ようです。

例えば、トップページ(index.pl)で、

左上にある、"データ編集・削除”というリンクをクリックすると、"admin.htm"にリンクされるはずなのですが、私の場合、リンク切れになってしまうのです。トップページに表示される、その他のリンクについても、リンク切れになってしまいます。

マルチドメインにしているので、パスの設定がどこかで間違っているのではないかと思うのですが・・

現在は2つのサイトをマルチドメインで動かしてますが、

サーバーのディレクトリの構造は、

一番上の階層が、"www" その下に、"A.com" "B.com" という、各ドメインごとのディレクトリを作成しています。

B.comは、リンク集サイトとして、運用したいので、

CGIに必要な、フォルダと、ファイルは、

"B.com"フォルダの中に、そのまま入れてあります。

(サーバーのフォルダ階層では、www/b.com/index.pl という風になります。)

このCGIの説明ページには、

http://tool.miyabi-seo.com/docs/freeware/seolink.htm

.htaccess

RewriteBase '/seolink';

雅SEO相互リンクのパスに書き換えます。

このように書かれていますが、私の場合、

このCGIを最も上の階層に置いているので、

このパス指定部分は、/B.com にしています。

ここが間違っているような気がするのですが・・

2009/01/03 09:12:18
id:koujirou6218 No.4

koujirou回答回数597ベストアンサー獲得回数472009/01/03 12:46:56

ポイント20pt

回答になってしまい申し訳ございません。


.htaccess

RewriteBase '/seolink';

以上の文ですが、これは「seolink」というディレクトリに設置しているということです。

つまり私の場合はtestディレクトリに設置していますので「/test」となるわけです。

http://www.pnavi.org/test/

ルートディレクトリに設置した場合は「/」のみになります。


どうでしょうか?

id:nobu55

koujirou6218様

90%できました~!

いやぁ~うれしいです。昨夜はずっと格闘していてたので、

本当に助けられました。ありがとうございます。

表示されるページ右下部に、下記2つのリンクがあるのですが、

リンク切れになってしまいます。

利用規約

http://www.linkphuket.com/html_agree.htm

リンク方法

http://www.linkphuket.com/html_method.htm

パスは教えていただいたように、設定したのですが。

大変恐縮なのですが、アドバイスいただけると助かります。

どうぞよろしくお願いします。

2009/01/03 13:23:00
id:koujirou6218 No.5

koujirou回答回数597ベストアンサー獲得回数472009/01/03 17:00:08

ポイント50pt

動作おめでとうございます。

どうやら、index.plにミスがあるようです。

>||

print "

  • リンク方法
  • \n";

    print "

  • 利用規約
  • \n";

    ||<

    となっておりますので、ルートディレクトリ(index.plと同じ階層)にhtml_agree.htmとhtml_method.htmが設置されていることになっておりますが、実際はhtmlディレクトリにありますのでhtmlディレクトリ内の2つのhtml_agree.htmとhtml_method.htmをルートディレクトリに移動させてください。


    もしかすると、製作者の意図で自分で作成するのを前提としていたかもしれません。

    id:nobu55

    ご回答本当にありがとうございます。

    koujirou6218さんのアドバイス(手順そのもの)がなかったら、ここまでも進みませんでした。

    私はhtmlやcssしか理解できず、cgiのコードは全くわからず、恐縮です。

    今回いただいた、ご回答を元に、

    agree.htm と method.htm をルートディレクトリに移しました。

    リンクをクリックしても表示されないので、

    更に、上記ファイルのファイル名を、

    html_agree.htm と html_method.htm 書き換えました。

    (htmlディレクトリに入っている、2つのファイル名は最初から agree.htm と method.htm でしたので、html_agree.htm と html_method.htm という名前の2つのファイルは、自動的に生成されるのだろうと思っていたのですが。)

    URLを打ち込むと、

    html_agree.htm と html_method.htm 2つのファイルは表示されるようになったのですが、

    サンプルページ(下記URL参照)のように、テンプレートに組み込まれた状態では表示されず、

    オリジナルの状態で表示されてしまいます。

    これは何か策がありますでしょうか?

    大変恐縮ですが、教えていただけると助かります。

    どうぞよろしくお願いします。

    http://tool.miyabi-seo.com/freeware/sample/seolink/html_agree.ht...

    http://tool.miyabi-seo.com/freeware/sample/seolink/html_method.h...

    2009/01/03 18:14:45
    id:rouge_2008 No.6

    rouge_2008回答回数594ベストアンサー獲得回数3512009/01/05 07:54:54

    ポイント50pt

    .htaccessのRewriteRuleの記述の一部がきちんと動作していないのだと思います。

    RewriteRule ^(html)_(\w+\.htm) index.cgi?mode=$1&fn=$2

    上記の記述を変更したりしていないでしょうか?(変更した場合は元に戻してみてください。)

    変更していない場合は、この記述のどれかがさくらのサーバーと合わないのだと思います。


    index.plの以下の記述を変更すると表示可能になりますので、代替手段になりますが、良かったら試してみてください。

    ※1038行目と1039行目にあります。

    print " <li><a href=\"html_method.htm\">リンク方法</a></li>\n";

    print " <li><a href=\"html_agree.htm\">利用規約</a></li>\n";


    上記の「html_method.htm」を「index.cgi?mode=html&fn=method.htm」に、「html_agree.htm」を「index.cgi?mode=html&fn=agree.htm」に変更して、以下のようにします。


    print " <li><a href=\"index.cgi?mode=html&fn=method.htm\">リンク方法</a></li>\n";

    print " <li><a href=\"index.cgi?mode=html&fn=agree.htm\">利用規約</a></li>\n";


    ※はてなでは「\」の表示がバックスラッシュになっていますが、半角の「¥」です。


    ※agree.htmとmethod.htmは、場所と名前を元に戻しておく必要があります。(htmlフォルダに戻してください。)

    id:nobu55

    ご回答ありがとうございました。

    教えていただいたように作業をして、無事表示されるようになりました。

    少し諦めかけていた時でしたので、とてもうれしかったです。

    もう少し教えていただきたいことがあるのですが・・・

    今回使用した、相互リンクCGIは、トップページのHTML編集や、

    デザインの変更にCGIの知識が必要だと思うのですが

    (ディレクトリにはスタイルシートが入っているので、色や文字の大きさ等が、cssで加工できるのは理解しています。)

    (今の段階で、デザインの自由度が低いことを認識する自分の甘さに反省しております。)

    トップページだけでも、デザインとHTMLを編集したいと思うのですが、

    以下のような事は可能でしょうか?

    ● cgiでは、ファイル(今回の場合はおそらくindex.pl)の中で、何らかのcgiタグでhtmlタグを囲むことで、html編集はできるのでしょうか?(例えば、ヘッダーやフッター部分に、強制的にhtmltタグを入れたりすることができるのか?という意味です。)

    お時間のある時に、ご回答いただけると助かります。

    回答ありがとうございました。重ねてお礼申し上げます。

    2009/01/05 13:55:10
    id:rouge_2008 No.7

    rouge_2008回答回数594ベストアンサー獲得回数3512009/01/05 16:23:20ここでベストアンサー

    ポイント50pt

    解決して良かったです。

    CGIで生成されるほぼすべてのHTMLタグにクラス名が指定されていますので、CSSファイルでも自由度の高いカスタマイズが可能だと思います。

    ※どのタグにどのクラス名が指定されているかは、雅SEO相互リンクのどのページ(※規約とリンク方法以外)でも大丈夫ですが、「表示」→「ソース」などでHTMLソースを表示して確認してみてください。


    もちろんCGI(index.pl)を編集して、任意の位置に直接HTMLタグを追加することも出来ます。

    ※タイトル表示部やカテゴリー表示部、著作権表示があるフッター部分に追加したい場合は、992行目以降に記述すると良いです。

    headタグ内などbodyの開始タグより上の部分は、Display.cgiを編集します。(「project」→「Output」フォルダ内にあります。)

    私も良く分かりませんが、print文で記述されている所には、同じようにprint文で記述すると良いです。

    print "<div class=\"header\">\n";

    上記のように1行ずつ「print "HTMLタグなど表示したいテキスト\n";」の形式記述します。

    ※表示したいHTMLタグに「"」(ダブルクォーテーション)が含まれる場合、その直前に半角の「¥」を記述します。

    http://cocohome.hp.infoseek.co.jp/cocohome/l_print.html

    http://miis.jp/perl_basic/perl3.html

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

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

    トラックバック

    • 回答訂正のご連絡 id:nobu55さん 以下の質問の回答で間違いがありましたのでご連絡します。 http://q.hatena.ne.jp/1230899549 回答に記載した「index.cgi」の拡張子の部分をそれぞれ「pl」に読み替えて
    「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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