
CGIファイルでfavicon.icoでお気に入りアイコンを
乗せようとしましたが、エラーになりました。
記述は以下です。
sub do_read {
print "Content-type: text/html\n";
print "\n";
print "$doctype\n";
print "<HTML>\n";
print "<HEAD>\n";
print "$contenttype\n";
print "<TITLE>$title</TITLE>\n";
print "<LINK REL="SHORTCUT ICON" href="favicon.ico">\n";
print "</HEAD>\n";
::::::::::::::::::::::::::::::::::::::::
print "<LINK REL="SHORTCUT ICON" favicon.ico">\n";
perlではfavicon.icoは使えないのでしょうか?
使えるとすればどのように記述すればよいのでしょうか?
No.2ベストアンサー
- 回答日時:
試しに以下のようなperlをcgi経由で呼び出してみましたが、
ちゃんとfaviconは表示されていました。
(favicon.icoはcgiファイルと同一ディレクトリ)
うまくいかない原因は、
favicon.icoのアクセス権(パーミッション)が適切でない
ということが考えられますが、それ以外だとちょっと分からないです。
--------<ここから>--------
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
print "<LINK REL=\"SHORTCUT ICON\" href=\"favicon.ico\">\n";
print "\n";
print "<TITLE>AAA</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "BBB\n";
print "</BODY>\n";
print "</HTML>\n";
--------<ここまで>--------
回答ありがとうございました。お礼おそくなりました。こんなにできないとサーバーが原因のようです。ぷらら。ほかのCGIサーバーじゃない方はちゃんとできているのですが、CGIサーバーはfaviconを受け付けないのでしょうか?サポートに聞いたところそんなことはないらしいのですが・・・。まだできていませんが一旦締め切らせて頂きます。また質問する機会があると思うのでよろしくお願いします。

No.3
- 回答日時:
>CGIサーバー上ではfavicon.icoが表示されないのです。
>別のサーバー上(純粋なHTML)では上記のように記述して表示されています。
cgi用とhtml用が分かれている設定のサーバーでは、cgiで出力したページに表示させる画像はhtml用サーバー側に置いて、http:からhtml用サーバー名を指定する必要があります。
favicon.icoといえども同じです。
お礼おそくなりました。回答ありがとうございました。やはりルートディレクトリとかの問題みたいですね。まだできていません。サーバーを今後移す予定なのでそれでもできなかったら再度質問させていただきます。
No.1
- 回答日時:
> perlではfavicon.icoは使えないのでしょうか?
この場合perlはhtmlを出力しているだけなので
htmlでできることは同じhtmlをperlで出力すればできます。
(perlでfavicon.icoを使っているというより、そういうhtmlを出力している。)
今回のエラーは出力する以前の問題だと思います。
たぶんこの行が原因でしょう。
> print "<LINK REL="SHORTCUT ICON" href="favicon.ico">\n";
"(ダブルクォーテーション)から"までが文字列と見なされるので
printで出力する文字列が「"<LINK REL="」でいったん終わってしまっています。
修正は文字列内の"を\でエスケープしてください。
print "<LINK REL=\"SHORTCUT ICON\" href=\"favicon.ico\">\n";
"の変わりに'(シングルクォーテーション)を使う方法もあります。
ただシングルクォーテーション文字列内では\n(改行文字)が使えないですが。
回答ありがとうございました。
ズバリその記述方法で解決したかのようでしたが、
別の問題が浮上してしまいました。
CGIサーバー上ではfavicon.icoが表示されないのです。
別のサーバー上(純粋なHTML)では上記のように記述して
表示されています。
PERLでも表示されるはずですよね?
そのCGIを起動させたHTMLが↓です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<script type="text/javascript">
<!--
image = new Image();image.src = "favicon.ico";
// -->
</script>
<LINK REL="SHORTCUT ICON" href="favicon.ico">
<TITLE>WN</TITLE>
</HEAD>
------------------------------------
<LINK REL="SHORTCUT ICON" href="favicon.ico">
だけではダメだったので、javascriptを使ったり、
favicon.icoのURLを絶対記述させたりもしてみましたが、
ダメでした。内部エラーではなく、faviconが表示
されません。faviconのファイル名も変えたりも
してみました。
使っているブラウザーはIE6.0以上です。
なにか考えられる原因や対策があれば教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
python print文のエラー
-
シェルで、ランダム関数を変数...
-
関数「exists」と「defined」の...
-
UWSCのSELECT文の記述方法
-
文字のカラーとフォントの指定...
-
Perlで、経過をLoading画面みた...
-
【至急!!!】python言語で本を見...
-
c言語 16進数の2進数への変換
-
awkの正規表現での最左最短マッ...
-
[Ruby] irbにおける文字化け
-
I2C接続のLCDディスプレイを使う
-
pythonで演算子を変数に代入す...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
文字の横にプルダウンを表示さ...
-
複数列を持ったリストボックス...
-
セレクトメニューで2つの項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
I2C接続のLCDディスプレイを使う
-
Pythonでコンソールをクリアす...
-
pythonの*
-
c言語 16進数の2進数への変換
-
条件文の扱い方について
-
関数「exists」と「defined」の...
-
【至急!!!】python言語で本を見...
-
ファイルに書き込む
-
EUCで保存されたスクリプトにて...
-
Perl・正規表現が分かりません
-
改行
-
perlの型と8進数、10進数
-
ソートを利用して文字を昇順で...
-
配列 各項目を$n倍するプログ...
-
表という文字の扱いについて
-
シェルスクリプト+perl
-
ポーリングとHTMLデータのリロ...
-
awkの正規表現での最左最短マッ...
おすすめ情報