Заметки, Проекты → SEO для борьбы с конкурентами
Время от времени приходится работать с различными cms. Среди них, иногда, попадается opencart. Довольно не плохой движок инет-магазина, но самое главное — очень простой. Видимо по этой причине многие его используют, включая и меня =).
Недавно попросили разобраться с дублями страниц на сайте, сделаном на opencart. Пришлось немного изучить модуль seo_url… и охренел. По другому и не скажешь. Вот так выводятся категории:
$this->load->model('tool/seo_url');
if (isset($this->request->get['path'])) {
$this->path = explode('_', $this->request->get['path']);
$this->category_id = end($this->path);
}
Для тех, кто еще не понял — обратите внимание на end. Т.е., модуль seo_url в берет только последний элемент урла и обрабатывает только его! Это же пизжопа какая-то!
С тем инет-магазином, в котором столкнулся с данной «фичей», вышел из ситуации с помощью следующего «грязного хака»:
$data = explode('/', trim($_GET['_route_'], '/'));
if (count($data) > 2) {
$end = end($data);
$res = array();
foreach ($data as $item)
if ($item != $end)
$res[] = $item;
else
break;
$res[] = $end;
if (count($res) != count($data)) {
$url = 'http://' . $_SERVER['HTTP_HOST'] . '/' . implode('/', $res) . (!empty($_GET['page']) ? $_GET['page'] : '') . '/';
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $url);
exit;
}
}
Думаю сами разберетесь, что именно он делает =).
P.S.: а, да… Надо же как-то оправдать название поста =). Ну тут все просто — если конкурент использует opencart с модулем seo_url, генерируем сотни тысяч липовых урлов и скармливаем поисковикам — пусть он разбирается что и как =).