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

Обсуждение CMS Made Simple в России.

Moderator: iturbay

Locked
User avatar
bettybraun
Forum Members
Forum Members
Posts: 10
Joined: Sun Dec 14, 2014 4:17 pm

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

Post by bettybraun »

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

Code: Select all

$config['use_hierarchy'] = false;
сайт не реагирует, надо сделать что-то еще.
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm
Location: Adler

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

Post by sbupravi »

Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

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

Post by guro »

Вот здесь возможное решение.

PS
sbupravi wrote:Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
Ваши сообщения в той теме тоже есть. ;) Не устроил вариант?
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm
Location: Adler

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

Post by sbupravi »

guro wrote:Вот здесь возможное решение.

PS
sbupravi wrote:Интересный вопрос, сам искал решения, как бороться с дублями страниц по разным URL...
Ваши сообщения в той теме тоже есть. ;) Не устроил вариант?
1,5 года назад ;D Проверим на днях, не помню уже, чем там закончилось :(
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

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

Post 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
User avatar
bettybraun
Forum Members
Forum Members
Posts: 10
Joined: Sun Dec 14, 2014 4:17 pm

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

Post by bettybraun »

guro wrote:Вот здесь возможное решение.

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

Спасибо большое! То, что надо!
User avatar
bettybraun
Forum Members
Forum Members
Posts: 10
Joined: Sun Dec 14, 2014 4:17 pm

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

Post by bettybraun »

Хм.. Сделала вторым способом, перестало работать
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

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

Post by guro »

bettybraun wrote:Хм.. Сделала вторым способом, перестало работать
Что за второй способ?
Locked

Return to “Russian - русский”