質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Q&A

解決済

3回答

3373閲覧

【SSI】多重インクルード(外部ファイル内でのインクルード)について

onobeka

総合スコア25

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

0グッド

0クリップ

投稿2018/12/07 07:05

編集2018/12/07 08:07

はじめまして。
不明点があるので有識者の方がいればご教授いただければと思います。

下記のような構成でwebサイトを作成しています。

index.shtml--inc--all.inc
--head.inc
--foot.inc

indexファイルでall.incを読み込み共通パーツである、
head.inc、foot.incを呼び出そうと思うのですが、
読み込まれるのはall.incの中身だけで、
head.incとfoot.incが読み込めません。

■index.shtml

<!DOCTYPE html> <html lang="ja"> <body> <!--#include virtual="/inc/all.inc"--> </html>

■all.inc

allです <!--#include virtual="/inc/head.inc"--> <!--#include virtual="/inc/foot.inc"-->

■head.inc

headです

■foot.inc

footです

■表示結果

allです

mampとレンタルサーバで表示の確認を行いましたが、
どちらもhead.inc、foot.incを読み込むことが出来ませんでした。

なにかしらの設定が必要なのか。
そもそも多重インクルードは無理なのか。
判断が出来ないのでどなたかご教授下さい。

以上です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/12/07 07:14

コードブロックは'''(シングルクォート)ではなく``` (バッククォート)です。コード部分を選択状態にして<code>ボタンを押すのが確実ですね。
m.ts10806

2018/12/07 07:14

あと、phpは直接ないような?現象確認されたブラウザも追記してください。
onobeka

2018/12/07 07:34

コードブロックについて、ありがとうございます。phpファイルは使用しておりません。SSIを利用しています
guest

回答3

0

ベストアンサー

SSIですね。includeの中でincludeは出来ます。
(1回分の入れ子しか試して無いので、何ファイルまで多重にできるかは不明ですが・・・)

確認するのは、下記2点かと。

■ SSIは有効になっていますか?

通常、デフォルトが「無効」だと思います。
※セキュリティリスクがあるらしいので、そのあたりはきちんと理解してから使った方がいいと思います。

とりあえず、有効か無効かをてっとり早く確認するなら、
ブラウザで該当ページを開いて、右クリックでソースを表示。
<!--#include ・・・がそのままHTML上に記載されているなら、SSIが有効になっていません。

有効にするには、.htaccessで設定するのが簡単ですが、
レンタルサーバーだと.htaccessが使えない場合もあるので、その場合はお手上げかもしれないですね・・・。

■ ファイルパスは、正しいですか?
~~
・サーバー上の「絶対パス」
<!--#include ・・・を書いたファイルからの「相対パス」
どちらかでないと読み込めません。
今だと絶対パスで書かれていますが、レンタルサーバーでそんなところにディレクトリが作れる気がしないので、間違っているのではないかと思われます。
~~
なお、読み込み対象のファイルが無ければ、該当箇所にエラーが表示されるはず・・。


きちんと確認していなくて申し訳ないです。virtualなので仮想パス行けましたね・・上記回答を取消させていただきます。

あと、もう1点確認すべきことがありました。

SSIの実行ファイルの拡張子は、.incも指定されていますか?

投稿2018/12/07 07:56

編集2018/12/07 09:31
mix-peach

総合スコア1910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onobeka

2018/12/07 08:17

ご回答有り難うございます。 表示結果を追加致しましたがall.incに記載している「allです」の読み込みは出来ます。 が、headとfootの読み込みが以前できない状態です。 パスを相対にしましたが何も変わりませんでした。
onobeka

2018/12/07 08:23

追記:all.incを下記のように設定してみましたが変わりありませんでした。 <!--#include virtual="head.inc"--> <!--#include virtual="./foot.inc"--> allです
guest

0

SSIの実行ファイルの拡張子の.incが指定されていませんでした。
みなさまありがとうございました。

投稿2018/12/08 02:21

onobeka

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

phpの取り込みではないですよね?SSIですか?
phpのincludeであれば多重で読めると思います

投稿2018/12/07 07:17

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onobeka

2018/12/07 07:35

コメントありがとうございます。 PHPは利用しておりません。 SSIを利用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問