Как избежать плохих SEO дублированных URL-адресов контента в Zend Framework - PullRequest
2 голосов
/ 12 декабря 2011

Я довольно новичок в Zend Framework и создаю веб-сайт в надежде реализовать хорошие методы SEO.

Структура URL будет такой:
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);

Что я не уверен, что это нормально, но, кажется, делает свое дело.

Что я замечаю дальше, так это то, что все эти URL-адреса указывают натот же контент (плохая практика SEO):

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

Есть лиспособ обойти эту проблему дублированного контента?

Заранее спасибо!

1 Ответ

0 голосов
/ 13 декабря 2011

Вы устанавливаете значения по умолчанию, поэтому для ровно одной страницы (страницы по умолчанию) запрос будет одинаковым. Если вы удалили значения по умолчанию, вы получите ошибку (404, я полагаю), если URI не содержит переменную.

$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, поскольку без этих данных я не уверен, что собирается делать ваш контроллер.

Если вы сделали это, единственными «дублированными» 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...