こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

共通部分の出力にPHPを使う場合

ただ今Webサイトを運営している者です。

ヘッダとかフッタの各ページ共通部分を、PHPを使って一元的に管理しようと考えています。

PHPを挿入するページをaa.html、PHPで挿入するヘッダのページをheader.phpとすると、

●aa.html
<html>
<head>
</head>
<body>
<?php include 'header.php'; ?>
</body>
</html>

●header.php
<html>
<head>
</head>
<body>
<div id="header">(中略)</div>
</body>
</html>

こんな感じで考えています。
二つ質問があるのですが、

1. header.phpがaa.htmlの<?php >の部分にそのまま表示される、と考えてよいのでしょうか?

2. http://netcity.blog69.fc2.com/blog-entry-23.html
上のページや、他のサイトを読むと、外部ファイルの拡張子は何でもよいとありますが、これは本当でしょうか?
書いてある内容は同じでも、txtとhtmlとphpでは全然違う気がするのですが……。

投稿日時 - 2012-11-29 18:59:19

QNo.7821787

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

> <?php include '/ssi/News.txt'; ?>
> のほうが良いでしょう。
SSIのほうが適切な理由や、
・・・PHPはローカルのテスト環境を作るのが大変なので(^^)
ISPが、SSIを許可しているなら。

> 位しか書いてなくて、HTMLの体をなしていませんから。
がだめな理由がよく分からないので、詳しい説明をお願いできますか?
確かにHTMLの体をなしていませんが、それがなぜまずいのでしょうか。

 これもローカルでの話ですが、ダブルクリックするとブラウザが起動してしまいます。テキストエディタが起動してくれるほうが楽です。

投稿日時 - 2012-12-03 18:04:54

ANo.4

No.3です。
H1には、そのページ自体の内容を表すものの法が良いです。
 サイト自体の名前をどうしても入れたければ、H2にでも入れて、スタイルシートで大きく上に表示するとか、スタイルシートで追加するとか。
 要約は、descriptionと同じにするとか

 metaは歴史的にはHTTPサーバー自体への伝達の意味もあったのですが、現在のHTTPサーバーはそれを利用していないと思います。そのままユーザーエージェントに渡され解釈される利用になるでしょう。

 SEO的には、PHPもSSIも無関係でサーバーから出力される時点で書き換えられていますから、その書き換え後のデータを利用すると考えればよいです。
<?php include '/ssi/News.txt'; ?>
のほうが良いでしょう。
単に
<aside id="NEWS">
 <dl>
  <dt><a href="/diary/201212">日記を追加</a></dt>
  <dd>紅葉も終盤で近くの山へ行ってきました。</dd>
  <dt><a href="/diary/201211">日記を追加</a></dt>
  <dd>・・・</dd>
 </dl>
</aside>
位しか書いてなくて、HTMLの体をなしていませんから。

 あくまでincludeさせるデータは、頻繁に書き換えられたり、すべてのページに共通でいちいち書き換えるのが面倒だとかの場合に利用すると良いでしょう。

投稿日時 - 2012-12-02 09:41:32

お礼

再び回答ありがとうございます。

やはりh1はページ自体の名前のほうがふさわしいですかね?
なぜこうし始めたかというと、私の好きなWeb制作会社のサイトで、h1に企業名、h2に企業説明、h3にページ自体の名前を書いていたので、それに倣ったのです。
ただ、調べたところ、h1が最もSEO効果が高いようですし、h1にページ自体の名前を入れたほうがよいかなとも思います。

> SEO的には、PHPもSSIも無関係でサーバーから出力される時点で書き換えられていますから、その書き換え後のデータを利用すると考えればよいです。
これは理解できるのですが、

> <?php include '/ssi/News.txt'; ?>
> のほうが良いでしょう。
SSIのほうが適切な理由や、

> 位しか書いてなくて、HTMLの体をなしていませんから。
がだめな理由がよく分からないので、詳しい説明をお願いできますか?
確かにHTMLの体をなしていませんが、それがなぜまずいのでしょうか。

投稿日時 - 2012-12-03 16:25:38

ANo.3

No.1です。
>閲覧できる状態のまま放置しておくと、何か不都合が発生したりしますか?
 HTMLの一部だけなので、見られても不都合ではないけど・・・
>PHPで管理するのはヘッダとフッタのみで、本文は普通にHTMLで記述するつもりです。
 通常はSSI(Server Side Oncludes)ですむところです。
 index.shtmlとして、挿入する部分に
<!--#include virtual="/ssi/header.htm" -->
 として、header.htmは
<div class="header">
 <h1>サイトタイトル</h1>
</div>
 とだけ書いておく。index.shtmlにアクセスすると、この部分に置き換えて表示されます。
※拡張子.htmlをshtmlとして動作させるには、
Options +Includes
AddHandler server-parsed html
を、記述した.htaccessファイルを置く。

>これはPHPが動作するローカルサーバがないと、ローカルでプレビューしたときに動作確認できないからですよね。
 そうです。

※header部分は、共通でないほうがSEO的には良いです。header部分には、そのページの内容を示す<h1></h1>や要約など、そのページ独自のものを記入すべきです。共通ではまずいのです。
 SSIで行う場合でも、次のように頻繁に書き変わる部分で、そのページの内容と直接関係ないものを、挿入するほうが良いでしょう。
<div class="aside"><!-- asideは本文と直接関係ない記事を示す -->
<!--#include virtual="/ssi/News.htm" -->
<!--#include virtual="/ssi/Note.htm" -->
</div>
<div class="footer">
<!-- include sitemap.htm -->
<!--#include virtual="/ssi/Information.htm" -->
<!--#include virtual="/ssi/Copyright.htm" -->
</div>
[HTML5]
<aside>
<!--#include virtual="/ssi/News.htm" -->
<!--#include virtual="/ssi/Note.htm" -->
</aside>
<footer>
<!--#include virtual="/ssi/Information.htm" -->
<!--#include virtual="/ssi/Copyright.htm" -->
</footer>

PHPを使用する場合は
<?php include '/ssi/News.htm'; ?>
とか
<?php include '/ssi/News.txt'; ?>
とか・・

投稿日時 - 2012-12-01 08:23:14

お礼

再び回答ありがとうございます。

私も最初はSSIで記述しようかと思ったのですが、知人に
「最近はSSIをあまり見ない。PHPのほうが一般的では」
といわれたので、PHPで記述しています。
あと、私がPHPは比較的慣れているがSSIは不慣れというのもあります。

最近でもSSIは使いますか?

SEOの件ですが、私は

<?php
include '../header.html';
?>
<h2>ページの名前</h2>
<p>要約</p>

という書き方をしていますが、これでどうでしょうか?
ちなみに、<h1>にはサイト全体の名前を入れて、header.htmlに書いています。

NewsとNoteがどういうファイルか分からないのですが、更新履歴とか日々のニュースとか、更新が頻繁に行われるファイルですよね?
なぜ「そのページの内容と直接関係ないもの」を書くとSEO対策になるのですか?


あと、別の質問になってしまうのですが、<head>内にも各ページ共通部分があったりしますよね。
例えば、<meta>タグによるcopyright・author表記やCSSの外部参照などです。
こういうのもPHPやSSIで一括管理して構わないのでしょうか?

投稿日時 - 2012-12-01 21:27:56

ANo.2

逆ですよ。

aa.php として header はなんでもいいです(header.html , header.php)。

ただし、header ファイルの内容は
<div id="header">(中略)</div>
だけにします。

aa.html のままですと何も表示されません。

サーバーの設定で、html を php として動作させるようになっていれば拡張子は.html でもいいですけど。

投稿日時 - 2012-11-30 12:43:51

お礼

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

> aa.php として header はなんでもいいです(header.html , header.php)。
調べなおしてみたら、確かに逆でしたね。失礼しました。

投稿日時 - 2012-12-01 07:28:48

ANo.1

 Windowsしか使っていないと理解が難しいかもしれませんが、一般的なOSは拡張子は目印以上の意味は持ちません。
 拡張子に無関係に、それぞれのアプリケーション、あるいはディレクトリごとに任意の拡張子(目印)をもつファイル、ないしファイルを任意のアプリケーションで利用できます。

 したがって、その設定でも良いのですが、一般的なウェブサーバーでは、拡張子がphpのものはPHPとして動作しますから、そのままでは意味ありませんね。

> PHPを挿入するページをaa.html、PHPで挿入するヘッダのページをheader.phpとすると、
 あなたの書かれている内容は、「PHPを使って外部ファイルをHTMLの一部に取り込む」ですから、以下の説明になります。---SSIとまったく同じ動作に見えます----

.htaccessにて、.htmlファイルをPHPとして動作するように指定して、.phpを単なるテキストとして動作する設定に変更しなければなりません。
 それではメンテナンスのときに困りますから、
一般的には、
<DIRECTRYINDEX>をindex.phpにした上で、すべてのファイルを.phpで利用するほうが多いと思います。

 私は、SSIが使える場合はSSIで実装しますが、ときどきSSIの仕様が出来ないサーバーもありますから、その場合は.htmlをPHPと指定しています。
 そして .htmファイルを使います。
.htmファイルは、.htaccessで閲覧禁止にしておくと良いでしょう。
●aa.html
<html>
<head>
</head>
<body>
<?php include 'header.htm'; ?>
</body>
</html>
として作成します。PHPが動作するローカルサーバーがない場合は、外部ファイルが読み込まれる部分のテストは出来ませんが、それ以外は通常のHTMLとしてメンテナンスできるでしょう。
 そして.htmファイルは
●header.htm
<div class="header" id="TOP">(中略)</div>
だけです。<head></head><body>などはあってはなりません。

>ヘッダとかフッタの各ページ共通部分を、PHPを使って一元的に管理しようと考えています。
 これは、 includeではなく、動的にページを作成することになりますから、.php(拡張子は設定で何でも良い)が、ヘッダのみならず、本文部分もすべてPHPでデータベースから作成することになります。このほうが楽ですが、PHPが動作するローカルサーバーとmySQLなどのデータベースをローカルに用意しないと困るでしょう。

投稿日時 - 2012-11-30 01:56:29

お礼

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

> 一般的なOSは拡張子は目印以上の意味は持ちません。
Windowsしか利用しないので知りませんでした。

> .htmファイルは、.htaccessで閲覧禁止にしておくと良いでしょう。
これは、<html><head>などがないHTMLファイルを閲覧できるようにしておくとまずいからですか?
閲覧できる状態のまま放置しておくと、何か不都合が発生したりしますか?

> 本文部分もすべてPHPでデータベースから作成することになります。
すみません、「一元的」という言葉の使い方がまずかったでしょうか。
PHPで管理するのはヘッダとフッタのみで、本文は普通にHTMLで記述するつもりです。

> PHPが動作するローカルサーバーとmySQLなどのデータベースをローカルに用意しないと困るでしょう。
これはPHPが動作するローカルサーバがないと、ローカルでプレビューしたときに動作確認できないからですよね。

投稿日時 - 2012-12-01 07:28:06

あなたにオススメの質問