Page 1 of 1

Иерархия страниц

Posted: Sun Dec 14, 2014 4:25 pm
by bettybraun
Насколько я знаю, для продвижения плохо, когда у одной страницы два адреса, например:
site.ru/tests/test и site.ru/test
Что надо сделать, чтобы страница была доступна только по алиасу, т.е. по второму виду ссылок, без иерархии? (или хотя бы по любому одному виду, исключая другие)
Учитывая, что на прописанную в конфиге строчку

Code: Select all

$config['use_hierarchy'] = false;
сайт не реагирует, надо сделать что-то еще.

Re: Иерархия страниц

Posted: Mon Dec 15, 2014 1:19 pm
by sbupravi
Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...

Re: Иерархия страниц

Posted: Mon Dec 15, 2014 10:11 pm
by guro
Вот здесь возможное решение.

PS
sbupravi wrote:Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
Ваши сообщения в той теме тоже есть. ;) Не устроил вариант?

Re: Иерархия страниц

Posted: Thu Dec 18, 2014 11:36 pm
by sbupravi
guro wrote:Вот здесь возможное решение.

PS
sbupravi wrote:Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
Ваши сообщения в той теме тоже есть. ;) Не устроил вариант?
1,5 года назад ;D Проверим на днях, не помню уже, чем там закончилось :(

Re: Иерархия страниц

Posted: Wed Dec 24, 2014 7:02 pm
by guro
Вот появился более правильный вариант.

Создаем тег пользователя с именем check_alias и содержимым

Code: Select all

list($module, $needid) = explode(",", $_REQUEST['mact']);
$mparams = GetModuleParameters($needid);
$page_alias = cmsms()->variables['page'];
$manager = cmsms()->GetHierarchyManager();
$node =& $manager->sureGetNodeByAlias($page_alias);
if ( isset($node) && $module == '' ) {
  $content =& $node->GetContent();
  if ($content !== FALSE && is_object($content)) {
    $real_url = $content->GetUrl();
    $url = str_replace(cmsms()->config['root_url'], "", $real_url);
  }
  if ($url != $_SERVER['REQUEST_URI']) {
    header( "HTTP/1.1 301 Moved Permanently" );
    header("location: " . $real_url);
  }
}
далее во всех глобальных шаблонах, в самом начале вставляем

Code: Select all

{check_alias}
Если в htaccess есть строчки

Code: Select all

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
их лучше удалить. А то, будут возникать двойные 301 редиректы.

PS
Проверялось на CMS 1.9.4.1

Re: Иерархия страниц

Posted: Fri Jan 02, 2015 9:11 pm
by bettybraun
guro wrote:Вот здесь возможное решение.

PS
sbupravi wrote:Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
Ваши сообщения в той теме тоже есть. ;) Не устроил вариант?

Спасибо большое! То, что надо!

Re: Иерархия страниц

Posted: Fri Jan 02, 2015 9:15 pm
by bettybraun
Хм.. Сделала вторым способом, перестало работать

Re: Иерархия страниц

Posted: Tue Jan 13, 2015 10:06 pm
by guro
bettybraun wrote:Хм.. Сделала вторым способом, перестало работать
Что за второй способ?