canonicalの値はcontroller側で設定しviewに渡す
URLを正規化するのに必須なcanonicalタグというのがあります。cakephp利用時にはコントローラ側で定義してviewに渡すようにしています。具体的には、
$this->set('canonical', DOMAIN."/file/".$param);
のような感じでviewにデータを流します。
viewのlayoutで以下のように設定しておけばif文で条件分岐することもなく、動的にcanonicalとしてデータを埋め込むことができます。
<link rel="canonical" href="<?php echo $canonical; ?>" />
この方法でcanonicalだけでなく、h1などのデータも動的に設定できます。
$this->set('title_for_h1', $data[0]['file']['title']);