Остались старые страницы после удаления. на которые была разбита статья
Поздравляю всех с Новым годом и желаю крепкого здоровья, а также творческих успехов!
Может быть кто-то сталкивался с проблемой такой?
Статью, как известно, можно разбить на страницы и тогда получается, что-то вроде: /v-mire-sveta-brinkly/page-5.html То есть, вот это page-5.html и делает переход по страницам. Такой метод очень, как оказалось, грузит страницу. Получается, что трудно зайти и почитать текст, если страниц в книге, скажем, около 100.
Отсюда, было принято решение отказаться от такого метода разбивки книги и вернуть все как было — анонс и скачать. Но появилась проблема! Я думал, что адрес типа /v-mire-sveta-brinkly/page-5.html будет теперь вести на 404 ошибку, но не тут то было, теперь это все ведет на одну страницу и там живет… создавая кучу дублей страниц.
Может быть есть способ сообщить как-то, что такие вещи не являются страницами, которые хорошие, что этого на самом деле нету?
Для примера вот можно глянуть о чем речь tanat.info/v-mire-sveta-brinkly/page-5.html Если менять пункт page-5.html на, например page-6.html, то мы перейдем на туже страницу.
Ох, я наверное тут туманно все объяснил, но это действительно проблема страшная… потому, что поисковики думают, что там есть контент, а его там нет… Получается, что я обманываю поисковики, а они потом за это банят людей разных… :(
Как поисковики увидят, что теперь нет /v-mire-sveta-brinkly/page-5.html? Вот если бы был способ, чтобы страницы вида page-5.html отправлялись на 404, то все решилось бы само собой.
Но что бы уже попавшие дубли не с играли с вами злую шутку, надо все же 301 настроить.
Тут дело не только в старых адресах со страницами. Такие же ссылки могут иногда появиться невесть откуда. И поэтому лучше, если движок будет отдавать нужный ответ. Откройте файл frontend.php и найдите код, начиная примерно со строки 216:
foreach($GLOBALS['pt'] as $num=>$page_title){ $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num+1); } }
foreach($GLOBALS['pt'] as $num=>$page_title){ $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num+1); } }elseif ($page > 1) { //ниже расскомментируйте нужное //cmsCore::error404(); //404 код ошибки //$inPage->addHead('<link rel="canonical" href="/'.$article['seolink'].'.html">'); //каноникал на статью }
Там есть только
// Разбивка статей на страницы foreach($GLOBALS['pt'] as $num=>$page_title){ $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num+1); }
К сожалению, такого нет блока в companent/content/frontend.php
Там есть только
// Разбивка статей на страницы foreach($GLOBALS['pt'] as $num=>$page_title){ $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num+1); }
Но я вставил как Вы написали и раскомментировал cmsCore::error404(); — все вроде работает и отправляет на 404
Еще раз большое спасибо.
Вы согласны что данные разбиваемые фильтром — это одна запись полного контента в базе данных.
Согласны!?
Давайте анализировать.
// Выполняем фильтры $article['content'] = cmsCore::processFilters($article['content']); // Разбивка статей на страницы foreach($GLOBALS['pt'] as $num=>$page_title){ $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num+1); } }
/** * Возвращает урл статьи * параметр $menuid устаревший, оставлен для совместимости * @return str */ public static function getArticleURL($menuid, $seolink, $page=1){ $page_section = '/page-'.$page; } else { $page_section = ''; } $url = '/'.$seolink.$page_section.'.html'; return $url; }
Что ВЫ предлагаете?
1-разбить одну страницу на фрагменты и перелинковать на главной теме?
2-вы желаете с одной страницы, переходить по ссылка на другие?
Принцип перелинковки страниц никто не отменял.