Php 如何向OpenCart页面添加规范标记?

Php 如何向OpenCart页面添加规范标记?,php,seo,opencart,canonical-link,Php,Seo,Opencart,Canonical Link,我已经创建了一个新的OpenCart 1.5.6商店–但是,它的许多页面与仍在运行的旧商店中的页面完全相同(在文本上下文方面)– 两个站点都已索引,我希望通过在新站点中包含规范标记来引用旧站点中所有相同的页面: 例如,上的“关于我们”页面的标题部分最好有这样的内容: <link rel="canonical" href="http://www.example.co.uk/delivery"/> <link rel="canonical" href="http://www.ex

我已经创建了一个新的OpenCart 1.5.6商店–但是,它的许多页面与仍在运行的旧商店中的页面完全相同(在文本上下文方面)–

两个站点都已索引,我希望通过在新站点中包含规范标记来引用旧站点中所有相同的页面:

例如,上的“关于我们”页面的标题部分最好有这样的内容:

<link rel="canonical" href="http://www.example.co.uk/delivery"/>
<link rel="canonical" href="http://www.example.co.uk/delivery"/>

例如,的“交付”页面在其标题部分最好有类似的内容:

<link rel="canonical" href="http://www.example.co.uk/delivery"/>
<link rel="canonical" href="http://www.example.co.uk/delivery"/>

我知道这在理论上是如何实现的,但无法在实践中应用。此外,虽然我最关心的是所有信息类型的页面,但理想情况下,我希望能够指定具有规范标记的确切页面,例如:

If (this page is About-Us OR Delivery OR … OR … OR … OR …)
{
Include Canonical Tag of the type <link rel="canonical" href="http://www.example.co.uk/xxxxxxxx"/> , 
where xxxxxxx changes accordingly, depending on the page.
}
Else
{
Don’t include Canonical Tag
}
If(本页是关于我们或交货或…或…或…或…)
{
包括类型的规范标记,
其中xxxxxxx根据页面的不同而相应变化。
}
其他的
{
不包括规范标记
}

实现这一点的最佳方法是修改文档类,在控制器中设置canonical,然后在header控制器中呈现它

编辑system/library/document.php

加:

private$canonical到您的类变量顶部

然后添加以下方法:

public function setCanonical($url) {
    $this->canonical = $url;    
}

public function getCanonical() {
    return $this->canonical;
}
在标题控制器中添加:

$this->data['canonical']=$this->document->getCanonical()

然后,您可以在header控制器中动态设置规范:

if (isset($this->request->get['_route_'])):
    $canonical_route = $this->request->get['_route_'];
else:
    $canonical_route = '';
endif;

$this->document->setCanonical($this->data['base'] . $canonical_route);

或者您可以使用setCanonical方法在控制器中手动设置。

根据您拥有的页数,我可以使用
in_array()
函数。然后,您可以在一个数组中指定所有页面(URL)并将其传递。那么使用
301
(内容移动)代码从旧页面重定向到新页面如何?这可以在
.htaccess
文件中实现。