yusk -ユースク-

  • WordPress
  • Twitter
  • RSS
  • Facebook

201106-16

URLの正規化(rel="canonical")を自動取得してみる

php_memo

link rel="canonical" ってあるし、使うと思う。

そもそもcanonicalはURLの正規化としての役割を担うのだが、(参考:rel=”canonical”の正規化で、重複コンテンツを撃退)WordPressなら標準のテーマ内で自動的に生成してくれるけど、通常のサイトだとhtml内でいちいち指定しないといけない。まぁ、全てのページに必ず必須ってわけじゃないし、例え無視してもそこまで寛大な被害も無い気もする。

でも、これを自動的に取得してしまおうと思ったのがきっかけでした。

まず、前提としてphpが動作する環境でのみ使えます。

スタティックなhtml内で使用したい場合は、htmlでphpを動かせるようにする方法も併用すると良いかもしれません。

URL+(動的な場合も考え、URL引数がある場合には?と?の後に取り出した値(URLそのまま)を付けて呼び出す。引数が無い場合には何も付けない。)

これを自動的に取得できるようにしようというワケです。

<link rel="canonical" href="
 <?php
  echo 'http://';
  echo $_SERVER["SERVER_NAME"];
  echo $_SERVER["REQUEST_URI"];
  $url = $_SERVER["QUERY_STRING"];
      if ($url == null) {echo '';}
      else {echo '?';};
  echo $_SERVER["QUERY_STRING"]; ?>
" />

このようにまとめて記述しておけば、自動的に取得して下記のような結果にしてくれます。

<link rel="canonical" href="https://yusk.org/lab/php/canonical_autoget.html" />
<link rel="canonical" href="https://yusk.org/?s=php" />

<head>~</head>内に指定しておけば、楽な場面があるかも。

尚、前も書きましたが僕はphpとか苦手なので、プログラマさんから見たらもっと良いソースがあるでしょう。なので色々ご容赦を。

トラックバックURL

コメントを残す

メールアドレスが公開されることはありません。