201106-16
URLの正規化(rel="canonical")を自動取得してみる
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とか苦手なので、プログラマさんから見たらもっと良いソースがあるでしょう。なので色々ご容赦を。
コメントを残す