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.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以上です。
なにか考えられる原因や対策があれば教えてください。
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といえども同じです。
お礼おそくなりました。回答ありがとうございました。やはりルートディレクトリとかの問題みたいですね。まだできていません。サーバーを今後移す予定なのでそれでもできなかったら再度質問させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonでターミナルに文字を出...
-
パイソンのクラスについて
-
16進の10進変換について
-
UWSCのSELECT文の記述方法
-
【至急!!!】python言語で本を見...
-
シェルスクリプトで、空白(ス...
-
Tiny Basicのプログラムでもう...
-
チェックボックスのCGIへの値の...
-
m//gとm//gcの違い
-
javaのパッケージ構成で各パッ...
-
perl言語について
-
数値英単語変換
-
Perlの例文でif($a==1&&$b==5&&...
-
I2C接続のLCDディスプレイを使う
-
PythonでUTF8の文字列をリスト...
-
CLispのloop内の挙動について
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
パイソンのクラスのブログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
16進の10進変換について
-
Pythonでターミナルに文字を出...
-
シェルスクリプトで、空白(ス...
-
【至急!!!】python言語で本を見...
-
pythonで演算子を変数に代入す...
-
c言語 16進数の2進数への変換
-
パイソンのクラスについて
-
I2C接続のLCDディスプレイを使う
-
関数「exists」と「defined」の...
-
pythonの*
-
変数の中は文字列か数値か調べ...
-
数値かどうかの判定方法
-
python print文のエラー
-
int(input("○○"))の使い方
-
Perlの例文でif($a==1&&$b==5&&...
-
awkの正規表現での最左最短マッ...
-
Use of uninitialized value ---
-
CGIでimgタグでalignを使うとエ...
-
swift 文字コードから文字に変...
-
javaのパッケージ構成で各パッ...
おすすめ情報