Заметки, Проекты → 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, генерируем сотни тысяч липовых урлов и скармливаем поисковикам — пусть он разбирается что и как =).