質問
- SSIを使って外部ファイルを読み込む
-
本文:
ヘッダーやフッター部分など、複数ファイルの共通部分をSSIを使って表示させようと思うのですが読み込んでくれません。
・読み込む側(index.shtml)
<html>
<body>
<!--#include file="/head.shtml" -->
</body>
</html>
・読み込まれる側(head.shtml)
<H1>私のホームページ</H1>
<P ALIGN="center">
<A HREF="index.html">HOME</A>
<A HREF="about.html">紹介</A>
<A HREF="diary.html">日記</A>
<A HREF="links.html">LINK</A>
</P>
index.shtmlとhead.shtmlは同じルートディレクトリにあります。
しかしこれでは読み込んでくれなかった
(エラーなどは出ずページのソースを見ると<!--#include file="/head.shtml" -->がそのまま残ってしまっています)
ので、サーバーの設定の問題かと思い、.htaccessを同じディレクトリに作成、以下を記述
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
しかし今度は「503 Internal Server Error」とエラー文が表示されます。
どうすればSSIを使って外部ファイルを読み込めるようになるのでしょうか?
- 緊急度:急ぎ投稿者:しいなりんごさん投稿時間:2013/08/15 02:41
回答 No.2026
-
本文:
>fileでの相対パスでの指定<!--#include file="head.shtml" -->や、virtualでの絶対パスでの指定<!--#include virtual="/head.shtml" -->
試してみましたがやはりダメでした。
う〜ん、後は
1. index.html は削除しましたか?
2. .htaccess は元に(空に)戻しましたか?
くらいですかね。
>試してみましたがやはりダメでした。
ダメと書くときは、どうダメだったのか書かないと読んでいる人にはわかりません。ソースに<!--#include ... -->が残ってしまうのか、500 error になるのか、(最初に書いたからいいや、でなく、)
差し支えないなら、作ろうとしているサイトのURLを正確に(変に伏字にしたりexample.comなどとしないで)書いてみるのが、いいかもね。
- 投稿者:ジョバンニさん 投稿時間:2013/08/16 01:20
質問者からのコメント
>ジョバンニさん
またまた回答ありがとうございます。
>1. index.html は削除しましたか?
index.htmlは削除しました。あるのはindex.shtmlとhead.shtmlのみです。
>2. .htaccess は元に(空に)戻しましたか?
.htaccessの中身は空白にしました。(元々存在しなかったので)
すみません。もう少し詳しく書くべきでした。
fileやvirtualを使って、さらに正確にパスを記入してもやはりソースに<!--#include ... -->が残ってしまい読み込んでくれません。
基本的に<!--#include ... -->などのSSIの機能を使ってもサーバー側ではただのコメントとして認識していないようでそのままソースに残ってしまうようです。(SSIは使用可のはずですが)
.htaccessに何か(命令)を記入した場合のみ「500 error」になります。
私も色々調べて自分なりに試してみたのですがどうしてもソースが残ってしまい上手く読み込んでくれません。
そこでさきほど運営に問い合わせてみたところ↓の方と全く同じ返信メールを頂きました。
もしかしたらやはりサーバー側に問題がありそうです。
とりあえずこの質問は今日いっぱいで一旦締め切ろうかと思います。
わざわざ2度も回答頂き本当にありがとうございました。
もしまた何かわからないことがあったらまた質問させていただくかもしれません。
その時はよろしければまた知恵をお貸ししていただけると幸いです。
回答 No.2027
-
本文:
私も試してみましたが、動作しませんでした。
そこで数日前に問い合わせています。
>>
通常、webcrowサービスでのSSIをご利用いただく事は可能で
ございますが、弊社にてテストをおこないましたところ、
正常に読み込まれませんでした。
当サーバー側の仕様(広告など)により
SSIの利用を妨げている可能性がございますので
本件については技術スタッフへ確認した後に
改めてご連絡いたします。
<<
回答はこんな感じです。
詳しいことはわかりませんが、参考まで・・・。
- 投稿者:k-tanさん 投稿時間:2013/08/16 19:38
質問者からのコメント
>k-tanさん
回答ありがとうございます。
この回答を見て私も運営に問い合わせしてみました。
そしてさきほど返信メールが届きました(思ったよりかなり早くてびっくりしました)が、k-tanさんと全く同じ内容でした・・・
どんなに試しても読み込んでくれなかったので、もしかしたらサーバー側に問題があるのかもしれませんね。
とりあえず運営の連絡を待つことにします・・・。
わざわざご報告ありがとうございました。
回答 No.2025
この回答がベストアンサーです
#include file="..." を使うときは、... の部分は、元のファイルからの「相対パス」で、.. を含んではいけません。
同じディレクトリにあるのなら、
<!--#include file="head.shtml" -->
絶対パスを指定したいのなら、#include file でなく、#include virtual を使って、
<!--#include virtual="/head.shtml" -->
ですかね。マニュアルを読みましょう。
http://httpd.apache.org/docs/2.2/ja/mod/mod_include.html
質問者からのコメント
>ジョバンニさん
さっそくの回答ありがとうございます。
fileでの相対パスでの指定<!--#include file="head.shtml" -->や、virtualでの絶対パスでの指定<!--#include virtual="/head.shtml" -->
試してみましたがやはりダメでした。
それから読み込まれる側(head.shtml)の拡張子を.htmlにしたり(もちろんその時にindex.shtml内のパスも同様に変更しました)なども試してみましたがやはりダメなようです。
何かによってSSIの利用を妨げられているかのように感じます。