【SEO対策】PHPでHTMLのtitleタグを動的に変更

プログラミング

今日は本当に基礎的な事なんですけれど、まだまだPHPを使い始めたばかりの方向けへ。

PHPを使うと同じテンプレートページさえ用意しておけば、データベースから情報を引っ張ってくるだけで無数に情報が違うページを作成出来ます。

1ページ1ページHTMLで作成しても良いんですが、データ量が大量になってきた時に管理がしきれませんし、いざWebページのレイアウトを変更しようとすると全ページの変更が必要になるケースも。

ここではPHPの利点を活かし、titleタグやページ情報を動的に変更するようにしましょう。

動的ページのtitleタグが固定だとSEOでは不利

SEO対策で非常に重要といわれているページタイトルを指し示すtitleタグ。

<head>
   <title>ページタイトル</title>
</head>

こんな感じで書かれる部分ですね。

PHPでGETでパラメーター指定するページの場合、URLが

//example.jp/detile.php?id=user_id

みたいな感じになります。

このURLを静的に見せる方法としてはapacheのmod_rewriteって言うモジュールがあります。

そっちは「PHP URL 静的」とかでぐぐればいくらでも出てくるんでいいとして、意外とtitleタグ内を動的に変更する記載が無かったんでメモ的に。

って言ってもPHPの基礎中の基礎です笑。

ページタイトルを動的に書き換えるには

まず前提として、例えばDBとか何かしらにその固有のページを指し示す文字列がある事が前提です。

例えば飲食店のポータルサイトを例としてみましょう。

通常、PHPファイルでもHTMLファイルでも<title>タグに設定したものはどんなパラメーターを渡されても一定です。

Aラーメン店とBイタリアン店があっても、結局はPHPでDBなりの内容を読み込んで出力してるだけなんで、大元のファイルは1つですよね。

なので<html>タグの前でデータを読み込んでおきましょう。

ここではMySQLを例とします。

次のようなテーブルがあるとましょう。

DB:users

user_idshop_name
1Aラーメン店
2Bイタリアン店
$user_id = 1;
//普通は検索ページか何かからGETやPOSTでデータ持ってきますけどここでは変数$user_idに直接ぶっこんでます

//DB接続
$sql = 'SELECT * FROM users WHERE user_id =:user_id';
$stmt = $dsn-prepare($sql);
$stmt-bindParam(':user_id', $user_id, PDO::PARAM_STR);
$stmt-execute();

//データ読み込み
$row = $stmt-fetch(PDO::FETCH_ASSOC);

<html>
<head>
	<title>飲食店ポータル | 検索詳細</title>
</head>
<body>
	店舗名:<?php htmlspecialchars($row['shop_name']) ?>
</body>
</html>

で、ここで変更したいのはtitleタグ。

このままだとページタイトルは飲食店ポータル | 検索詳細となんの詳細やらさっぱりわからんこっちゃになってます。

次のように書き換えてみましょう。

$user_id = 1;
//普通は検索ページか何かからGETやPOSTでデータ持ってきますけどここでは変数$user_idに直接ぶっこんでます

//DB接続
$sql = 'SELECT * FROM users WHERE user_id =:user_id';
$stmt = $dsn-prepare($sql);
$stmt-bindParam(':user_id', $user_id, PDO::PARAM_STR);
$stmt-execute();

//データ読み込み
$row = $stmt-fetch(PDO::FETCH_ASSOC);

<html>
	<head>
		<title>飲食店ポータル | <?php htmlspecialchars($row['shop_name']) ?></title>
	</head>
	<body>
		店舗名:<?php htmlspecialchars($row['shop_name']) ?>
	</body>
</html>

これでページタイトルは飲食店ポータル | Aラーメン店になります。

こんな応用も出来ます。

<html>
	<head>
		<title>飲食店ポータル | <?php htmlspecialchars($row['shop_name']) ?>詳細</title>
	</head>
	<body>
		店舗名:<?php htmlspecialchars($row['shop_name']) ?>
	</body>
</html>

※htmlspecialchars関数を使う時はちゃんと第三引数まで指定するんだぞ!

こんな感じの書き方にすると、ページタイトルは飲食店ポータル | Aラーメン店詳細になります。

 

本当に基礎的は部分なんですが、こういう細かいところが非常に大事です。

こういう対策をしておかないと、Google等で検索した時にずらっと並ぶ検索結果が飲食店ポータル | 検索詳細ばっかりになるばかりかインデックスされない可能性も大いに出てきます。

上記のような対策をする事でせっかくのPHPの利点である動的なページ生成を検索ロボットに対して明示できるので、「このページはちゃんと別のページですよ」ってのが分かる=インデックスされやすくなると思います。

それにユーザー目線で見て、飲食店ポータル | 検索詳細飲食店ポータル | Aラーメン店だったらどっちがクリックしたくなる?ってもんです笑。

大事なのはユーザビリティ

良くSEO対策とかで検索すると完全に検索ロボット対策に特化した記事も多いので忘れちゃいがちですが、一番大事なのは見てくれるユーザーです。

ぶっちゃけ検索ロボットへの対策なんてしなくたって良質なコンテンツが揃ってるWebサイトだったら最低限でインデックスされますし検索上位にもなります。

逆にSEO対策万全!ってページだってコンテンツがろくでもなかったりコピーコンテンツばかりだったら見向きもされないでしょう・・・笑。

 

Webサイト構築は誰かが見る事が一番の目的である事を忘れないでいきたいですね!

Wordpress
\お役に立てたらシェアして下さると嬉しいです/
この記事を書いた人
けんちゃん

現役サポートミュージシャン、その他FXやサイト運営で生計を立てています。テクノロジー系の事も好きだったり。
大体1ヶ月にブログだけで40代~50代サラリーマンの年収ぐらい稼いでます。

けんちゃんをフォローする

よく読まれているオススメ記事

L'7 Records

コメント

タイトルとURLをコピーしました