Дубли страниц

Всё, связанное с программной частью системы, правка модулей, вопросы по php и mysql

Дубли страниц

Postby Alexandr » 24 Dec 2019, 15:41

Здраствуйте!
Существуют ссылки - дубли:
site.ru/nedvizh/kvartiry/prodam/
и
site.ru/russia/mos-obl/nedvizh/kvartiry/prodam/

а также
site.ru/messages/96-kvartira-3x-kom.html
и
site.ru/russia/mos-obl/messages/96-kvartira-3x-kom.html

В sitemap.xml кстати формируются ссылки вида:
site.ru/nedvizh/kvartiry/prodam/
site.ru/russia/mos-obl/
site.ru/messages/96-kvartira-3x-kom.html
Независимо от того стоит ли в админке галочка "Использовать региональные URL".

Вопрос:
Подскажите как сделать редирект, чтобы при выбранном регионе ссылки не формировались с регионом?
Пример:
site.ru/russia/mos-obl/nedvizh/kvartiry/prodam/ redirect 301 на site.ru/nedvizh/kvartiry/prodam/
С сохранением выбранного региона и отбора объявлений в нем.

Либо другой вариант, чтобы при установленном "Использовать региональные URL" формировались ссылки только с регионом, в том числе и в sitemap.xml
Пример:
site.ru/nedvizh/kvartiry/prodam/ redirect 301 на site.ru/russia/mos-obl/nedvizh/kvartiry/prodam/
site.ru/messages/96-kvartira-3x-kom.html redirect 301 на site.ru/russia/mos-obl/messages/96-kvartira-3x-kom.html
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Re: Дубли страниц

Postby Geo » 27 Dec 2019, 13:11

При выключенных региональных URL сами URL регионов не становятся невалидными, просто ссылки на рубрики формируются без регионов, а информация о текущем регионе хранится в куках. Если старые ссылки были проиндексированы поисковыми системами, можно закрыть их от индексации с помощью опции "Запретить индексировать страницы регионов".
Чтобы полностью скрыть региональные URL, можете написать обработку, которая их будет убирать 301-м редиректом. Добавьте в папку commands файл с раширением .inc. Пропишите там:
Code: Select all
<?php
if(!empty($second_region['uri'])){
   $region_uri = '/'.implode('/', $second_region['uri']);
   if(strpos($_SERVER['REQUEST_URI'], $region_uri) !== false){
       $redirect = str_replace($region_uri, '', $_SERVER['REQUEST_URI']);
       redirect301($redirect);
       exit();
   }
}
?>
User avatar
Geo
Администратор
 
Posts: 986
Joined: 20 Sep 2010, 21:15

Re: Дубли страниц

Postby Alexandr » 27 Dec 2019, 13:38

Редирект на ссылку без регона работает. Но когда выбираешь один из регионов, то белый экран.
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Re: Дубли страниц

Postby Geo » 27 Dec 2019, 13:48

По какой ссылке видите белый экран?
User avatar
Geo
Администратор
 
Posts: 986
Joined: 20 Sep 2010, 21:15

Re: Дубли страниц

Postby Alexandr » 27 Dec 2019, 14:13

Было по ссылке: site.ru/russia/mos-obl/
Разобрался, в .htaccess стоял редирект на без "/" на все формирующиеся ссылки, из-за этого возникал циклический редирект.

Подскажите где поправить, чтобы региональные ссылки формировались без слеш? А во избежание дублей был бы редирект на без "/"
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Re: Дубли страниц

Postby Alexandr » 29 Dec 2019, 09:20

И еще вопрос. При варианте редиректа
Code: Select all
<?php
if(!empty($second_region['uri'])){
   $region_uri = '/'.implode('/', $second_region['uri']);
   if(strpos($_SERVER['REQUEST_URI'], $region_uri) !== false){
       $redirect = str_replace($region_uri, '', $_SERVER['REQUEST_URI']);
       redirect301($redirect);
       exit();
   }
}
?>

Мы фактически лишаемся региональной привязки для поисковиков, т.к. все региональные ссылки переадресуются на главную страницу.

Как Вы считаете, возможно лучше второй предложенный вариант?
Чтобы все ссылки формировались с региональной привязкой и соответственно был бы редирект где без них (по аналогии как в авито).
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Re: Дубли страниц

Postby Geo » 30 Dec 2019, 10:59

Да, все региональные ссылки редиректятся на главную, а информация о выбранном регионе хранится в куках.

Чтобы сделать редирект на урлы без слэша на конце надо переписать этот код в includes/compile/cat.php
Code: Select all
    if(substr($_SERVER['REQUEST_URI'], -1) != '/'){
       $ext = get_ext($_SERVER['REQUEST_URI']);
       if(strpos($_SERVER['REQUEST_URI'], '?') === false && !isset($_GET['page'])){
        redirect301($_SERVER['REQUEST_URI'].'/');
       }
    }


Делаем так
Code: Select all
    if(substr($_SERVER['REQUEST_URI'], -1) == '/'){
       $ext = get_ext($_SERVER['REQUEST_URI']);
       if(strpos($_SERVER['REQUEST_URI'], '?') === false && !isset($_GET['page'])){
        redirect301(substr($_SERVER['REQUEST_URI'], 0, -1));
       }
    }

Сами ссылки надо переписывать в файлах шаблона. В зависимости от используемого шаблона и типа вывода подрубрик эти ссылки чаще всего генерятся в шаблонах treeX.html
User avatar
Geo
Администратор
 
Posts: 986
Joined: 20 Sep 2010, 21:15

Re: Дубли страниц

Postby Alexandr » 11 Jan 2020, 16:16

Спасибо, помогло!
Подскажите еще пожалуйста. Как сделать чтобы в хлебных крошках ссылки не формировались с регионом и без слеша в конце?
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Re: Дубли страниц

Postby Geo » 13 Jan 2020, 11:10

Хлебные крошки формируются в функции breadcrumb в smarty/modifirs.php, попробуйте изменить её самостоятельно.
User avatar
Geo
Администратор
 
Posts: 986
Joined: 20 Sep 2010, 21:15

Re: Дубли страниц

Postby Alexandr » 13 Jan 2020, 13:09

Прежде чем написать пытался, но не выходит. Помогите пожалуйста!
Alexandr
 
Posts: 14
Joined: 18 Dec 2017, 11:37

Next

Return to Программная часть скрипта

Who is online

Users browsing this forum: No registered users and 2 guests