如何避免Zend Framework中糟糕的SEO重复内容URL

时间:2011-12-12 11:58:54

标签: seo duplicates zend-framework

我是Zend Framework的新手,我正在建立一个希望实施良好SEO实践的网站。

网址结构将是:
example.com/language/city/controller/action

所以我在我的引导程序中创建了这条路线:

$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$route = new Zend_Controller_Router_Route(':language/:city/:controller/:action/*',
                                         array('language'=>'es',
                                               'city'=>'barcelona',
                                               'controller'=>'index',
                                               'action'=>'index'));
$router->addRoute('language_city', $route);

我不确定是否可以,但似乎可以做到这一点。

接下来我注意到所有这些网址都指向相同的内容(糟糕的SEO实践):

/
/es
/es/barcelona
/es/barcelona/index
/es/barcelona/index/index

有没有办法解决这个重复的内容问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您正在设置默认值,因此对于一个页面(默认页面),请求将是相同的。你删除了默认值,如果URI不包含变量,你会收到错误(我相信404)。

$route = new Zend_Controller_Router_Route(
    ':language/:city/:controller/:action/*',
    array('language'=>'es', //default when not in URI
          'city'=>'barcelona', //default when not in URI
          'controller'=>'index', //default when not in URI
          'action'=>'index' //default when not in URI
    )
 );

您似乎可能希望删除 language city的默认设置,因为如果没有该数据,我不确定您的控制器将要执行的操作。< / p>

如果您这样做,唯一的“重复”URI将是:

/es/barcelona
/es/barcelona/index
/es/barcelona/index/index

但是你只需要使用其中一个URI 。如果您使用Zend的View_Helper_Url输出链接,它会关闭index/index - 因为它与默认值匹配。

您始终可以添加其他路线以将其他请求(例如/)映射到相关控制器。

还应该注意,如果您只有一个控制器处理所有这些“城市”请求,则无需将其置于URI

$route = new Zend_Controller_Router_Route(
    ':language/:city/:action/*',
    array('language'=>'es', //default when not in URI
          'city'=>'barcelona', //default when not in URI
          'controller'=>'index', //all requests route here
          'action'=>'index' //default when not in URI
    )
 );

然后唯一的'重复'URI是:

/es/barcelona
/es/barcelona/index