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

記事内に広告が含まれていることがあります。
プログラミング

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

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

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

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

WordPressカテゴリーCTA
\ココナラでWordPressエラー修正サービス始めました!/

ココナラでWordPressのエラー解決サービスを始めました!

追加オプション無しで3,000円から受け付けておりますが、新規会員登録で300円、僕の紹介コードを入力すると1,000円分のポイントが貰えるので実質1,700円から利用することができます!

  • 突然画面が真っ白になった
  • 英語のエラーが表示されてどうしたらいいかわからない
  • とにかく困っている

どんなことでもぜひお気軽にご相談ください!

紹介コード:K0GR23
スポンサーリンク
スポンサーリンク

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

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

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

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

PHPでGETでパラメーター指定するページの場合、URLが以下のようになります。

URL
https://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イタリアン店
PHP
//普通は検索ページか何かからGETやPOSTでデータ持ってきますけどここでは変数$user_idに直接入れてます
$user_id = 1;

//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タグ。

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

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

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

//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
<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
スポンサーリンク
\この記事いいね!と思ったらシェアしてね/
スポンサーリンク
L'7 Records

コメント

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