Gregar Опубликовано 20 декабря, 2015 Жалоба Поделиться Опубликовано 20 декабря, 2015 (изменено) Многие встречаются с проблемой дублей страниц, что в свою очередь негативно влияет на сайт при индексировании его поисковиками. Для того чтобы избавится от такой проблемы я использовал следующий код: // Убираем слеш в конце ссылок $uri = preg_replace("/\?.*/i",'', $_SERVER['REQUEST_URI']); if ((!strpos($uri, 'simpla')) && (strlen($uri)>1)) { if (rtrim($uri,'/')!=$uri) { header("HTTP/1.1 301 Moved Permanently"); header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI'])); exit(); } } Приведенный выше код необходимо поместить в файл index.php который находится в корне сайта. ~12 строка. Если у Вас есть решение по лучше, разместите его в ответах данной темы. Методы через .htcaccess мне не помогли и приходилось очень много править и выстраивать правила, что в моем случае было слишком напряжно. Изменено 20 декабря, 2015 пользователем Gregar Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 20 декабря, 2015 Жалоба Поделиться Опубликовано 20 декабря, 2015 Если в URL товара встретится 'admin', то работать на такой странице не будет, напримерhttp://site.ru/products/administator-handbook/ И вообще непонятно, зачем нужно условие !strpos($uri, 'admin') По-моему, его можно безболезненно удалить. Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 20 декабря, 2015 Автор Жалоба Поделиться Опубликовано 20 декабря, 2015 (изменено) Если в URL товара встретится 'admin', то работать на такой странице не будет, напримерhttp://site.ru/products/administator-handbook/ И вообще непонятно, зачем нужно условие !strpos($uri, 'admin') По-моему, его можно безболезненно удалить. Верное замечание. Скорее всего логичнее изменить на simpla чтобы мы не теряли возможность входа в админку. Изменено 20 декабря, 2015 пользователем Gregar Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 20 декабря, 2015 Жалоба Поделиться Опубликовано 20 декабря, 2015 а есть ли смысл? для страницы со слешами выдается канонический юрл без слеша Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 20 декабря, 2015 Автор Жалоба Поделиться Опубликовано 20 декабря, 2015 а есть ли смысл? для страницы со слешами выдается канонический юрл без слеша Смысл есть в том случае если вы занимаетесь сео оптимизацией сайта. Если для Вас это не важно или сайт содержит мало товаров и услуг, то в этом случае я думаю хватит и того, что имеется стандартно. Хотя лишним это не будет. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 20 декабря, 2015 Жалоба Поделиться Опубликовано 20 декабря, 2015 Смысл есть в том случае если вы занимаетесь сео оптимизацией сайта. Если для Вас это не важно или сайт содержит мало товаров и услуг, то в этом случае я думаю хватит и того, что имеется стандартно. Хотя лишним это не будет. да, я не СЕО-шник и не знаю, просто интересуюсь. тоесть каноникл не решает в полной мере проблему таких дублей? Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 20 декабря, 2015 Автор Жалоба Поделиться Опубликовано 20 декабря, 2015 да, я не СЕО-шник и не знаю, просто интересуюсь. тоесть каноникл не решает в полной мере проблему таких дублей? В какой-то степени он способен решить некоторые дубли, но тут есть много подводных камней. При использовании канонических адресов, нужно прописывать условия, где и какой адрес нужно показать поисковику. В симпле сделано все таким образом чтобы продемонстрировать, что те или иные функции уже имеются в движке, а вот допилить и применить их под себя может уже любой желающий. К примеру если мы в каталоге товаров перейдем на вторую страницу, мы увидем в адресной строке такую ссылку: http://demo.simplacms.ru/catalog/mobilnye-telefony?page=2 где на конце ссылке присутствует ?page=2 мы должны сообщить поисковику о том, что канонический адрес на этой странице совсем другой. В стандартном шаблоне адрес этот имеется, но нам не зачем индексировать данные страницы. Значит нужно добавить условие которое будет показывать на подобных страницах <meta name="robots" content="noindex, follow" /> <link rel="prev" href="/catalog/mobilnye-telefony"/> <link rel="next" href="/catalog/mobilnye-telefony?page=3"/> Выходит, что часть каких-то проблем с оптимизацией мы можем решить стандартным набором условий и функций, но чтобы избавиться от дублей придется воспользоваться всеми методами для оптимизации страниц. Страница: http://demo.simplacms.ru/products/samsung-s5570-galaxy-mini и страница: http://demo.simplacms.ru/products/samsung-s5570-galaxy-mini/ для нас выглядят одинаково, но для поисковика это дубли. Цитата Ссылка на сообщение Поделиться на другие сайты
stasok Опубликовано 21 декабря, 2015 Жалоба Поделиться Опубликовано 21 декабря, 2015 Как то делал - убирал конечный слеш в ШопСкрипте. Лет 5 назад. Вроде работало красиво через "ейчтиаксес".По пагинации. Есть статья на СеоПрофи хорошая.Я делал сразу по двум вариантам. И next, prec + каноникал на первую страницу(на страницах 2+) - без page-1.Закрывал в роботсе страницы пагинации. И ещё тоже самое только без prev, next - на page-all. Цитата Ссылка на сообщение Поделиться на другие сайты
Julius123 Опубликовано 21 декабря, 2015 Жалоба Поделиться Опубликовано 21 декабря, 2015 У меня вот такой редирект стоит и прекрасно работает. Зачем править код? # Редирект на адреса без слеша RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L] Цитата Ссылка на сообщение Поделиться на другие сайты
shin Опубликовано 25 декабря, 2015 Жалоба Поделиться Опубликовано 25 декабря, 2015 (изменено) Дам совет который не даст ни кто здесь по ходу :-). Неиграйтесь с огнём ребята:-) Не знаете, не уверены, не делайте, пусть всё так ибудет с кодом. Ни черта не исправляйте в симпла сами или по совету на форумах тапаэтой темы, которую часть продублирую:Многие встречаются с проблемой дублей страниц, что в своюочередь негативно влияет на сайт при индексировании его поисковиками. Длятого чтобы избавится от такой проблемы я использовал следующий код:ну и некий код даже обсуждаемый.И вот программисты как правило ни чего не понимающие в сео (нехочу обидеть ни кого) начинают грызть косточку брошенную. Скажу так НЕТ ВСИМПЛА НИ КАКОЙ ПРОБЛЕМЫ С ДУБЛЕМ СТРАНИЦ! И НЕ МОЖЕТ БЫТЬ! Откройте для себяВебмастер гугл хотя б. Главное для вашей оптимизации сайта уникальный контент и правильные метаданные данные, про которые можете почитать в инете, а вот это нужно предоставить либо профилибо занимайтесь сами - консультируйтесь и двигайтесь. Ни в коем случае не исправляйте сео ядросистемы - чревато последствиями. Баловаться c htaccess или robots.txt этоодно, однако тоже нужно подходить с умом используя рекомендации яндекс и гугл ввебмастере. Могу здесь много писать про дубли ссылок, хлебные якобы правильныекрошки и пагинацию страниц, простите за русский, фильтр симпла, сортировку,каноникал, большую карту сайта более 50 000 товаров, нормальный её вывод якобы нужный на сайте в htmlи прочее, но не хочу, ибо это маленькие проблемы симпла и это в целом для раскруткисайта не так уж и важно!!! Изменено 25 декабря, 2015 пользователем shin Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 9 января, 2016 Автор Жалоба Поделиться Опубликовано 9 января, 2016 Дам совет который не даст ни кто здесь по ходу :-). Неиграйтесь с огнём ребята:-) Не знаете, не уверены, не делайте, пусть всё так ибудет с кодом. Ни черта не исправляйте в симпла сами или по совету на форумах тапаэтой темы, которую часть продублирую: Многие встречаются с проблемой дублей страниц, что в своюочередь негативно влияет на сайт при индексировании его поисковиками. Длятого чтобы избавится от такой проблемы я использовал следующий код: ну и некий код даже обсуждаемый. И вот программисты как правило ни чего не понимающие в сео (нехочу обидеть ни кого) начинают грызть косточку брошенную. Скажу так НЕТ ВСИМПЛА НИ КАКОЙ ПРОБЛЕМЫ С ДУБЛЕМ СТРАНИЦ! И НЕ МОЖЕТ БЫТЬ! Откройте для себяВебмастер гугл хотя б. Главное для вашей оптимизации сайта уникальный контент и правильные метаданные данные, про которые можете почитать в инете, а вот это нужно предоставить либо профилибо занимайтесь сами - консультируйтесь и двигайтесь. Ни в коем случае не исправляйте сео ядросистемы - чревато последствиями. Баловаться c htaccess или robots.txt этоодно, однако тоже нужно подходить с умом используя рекомендации яндекс и гугл ввебмастере. Могу здесь много писать про дубли ссылок, хлебные якобы правильныекрошки и пагинацию страниц, простите за русский, фильтр симпла, сортировку,каноникал, большую карту сайта более 50 000 товаров, нормальный её вывод якобы нужный на сайте в htmlи прочее, но не хочу, ибо это маленькие проблемы симпла и это в целом для раскруткисайта не так уж и важно!!! Как показывает практика, в Simpla CMS все сделано хорошо, но нужно все равно работать и работать над системой для того чтобы достигать результатов. Дубли в Simpla CMS есть как в yandex так и в google. Вы написали выше то, что и так каждый знает, а форум для того и создан чтобы решать проблему. Можно написать редиректы в htcaccess, а можно в php коде. Тут уже дело каждого чем удобнее пользоваться им. С файлом htcaccess могут возникнуть разные проблемы из-за не соблюдения правил. В php логика другая и работать легче. Используя советы с форума каждый их применяет на свой страх и риск, но судя по обсуждениям и мнениям программистов которые тут собрались, можно сделать вывод, что далеко не глупые люди тут сидят и большинство доработок нужны лишь в некоторых проектах. Решение которое я выложил выше является подсказкой для тех кому необходимо избавиться от дублей и не как не обязывает ни кого использовать данный метод у себя на сайте без необходимости. http://demo.simplacms.ru/ubiraem-sleshi-v-kontse-url-i-izbavlyaemsya-ot-dublej - скриноты можно по смотреть тут Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 9 января, 2016 Жалоба Поделиться Опубликовано 9 января, 2016 (изменено) Используйте .htaccess, метод написан выше здесь И дополню от себя, избавляемся от www.и www.sitename.ru/index.html (если он имеется) RewriteCond %{HTTP_HOST} ^www.sitename.ru$ [NC] RewriteRule ^(.*)$ http://sitename.ru/$1 [R=301,L] RewriteRule ^index.html$ http://sitename.ru/ [R=301,L] Изменено 9 января, 2016 пользователем cernos Цитата Ссылка на сообщение Поделиться на другие сайты
4443345 Опубликовано 13 марта, 2016 Жалоба Поделиться Опубликовано 13 марта, 2016 Многие встречаются с проблемой дублей страниц, что в свою очередь негативно влияет на сайт при индексировании его поисковиками. Для того чтобы избавится от такой проблемы я использовал следующий код: // Убираем слеш в конце ссылок $uri = preg_replace("/\?.*/i",'', $_SERVER['REQUEST_URI']); if ((!strpos($uri, 'simpla')) && (strlen($uri)>1)) { if (rtrim($uri,'/')!=$uri) { header("HTTP/1.1 301 Moved Permanently"); header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI'])); exit(); } } Приведенный выше код необходимо поместить в файл index.php который находится в корне сайта. ~12 строка. Если у Вас есть решение по лучше, разместите его в ответах данной темы. Методы через .htcaccess мне не помогли и приходилось очень много править и выстраивать правила, что в моем случае было слишком напряжно. Скажите если у меня дописан рел каноникал в шаблоне, если вставить этот код, не создаст ли это конфликт или негативно не повлияет ли? Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 помогло, спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 30 ноября, 2017 Жалоба Поделиться Опубликовано 30 ноября, 2017 (изменено) $serv_uri = $_SERVER["REQUEST_URI"];$uri = array_filter(explode("/", $serv_uri));if($serv_uri != "/" && substr($serv_uri, -1) == "/" && !strpos($serv_uri, 'simpla')){ header("Location: /".implode("/",$uri), true, 301); exit();} мой вариант, без preg_replace и str_replace.p.s. если у вас сервер работает на https то правильного редиректа не произойдёт т.к. вы привязались к "http".поэтому лучше ссылаться не указывая сервер и протокол, а если указываете протокол, то указывайте через REQUEST_SCHEME Изменено 30 ноября, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
miltonmors Опубликовано 30 ноября, 2017 Жалоба Поделиться Опубликовано 30 ноября, 2017 И чем этот вариант лучше? Если встретится адрес site.ru/products/with-simpla-inside/, то и не сработает Ваш метод.А в реальности админ такое заметит лишь после того, как поисковик дубль уже зафиксирует... Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 30 ноября, 2017 Жалоба Поделиться Опубликовано 30 ноября, 2017 И чем этот вариант лучше? Если встретится адрес site.ru/products/with-simpla-inside/, то и не сработает Ваш метод.А в реальности админ такое заметит лишь после того, как поисковик дубль уже зафиксирует... if($serv_uri != "/" && substr($serv_uri, -1) == "/" && $ur[0] != 'simpla'))делов то.я написал выше чем изначальный вариант плох. Цитата Ссылка на сообщение Поделиться на другие сайты
miltonmors Опубликовано 30 ноября, 2017 Жалоба Поделиться Опубликовано 30 ноября, 2017 И чем же он плох? Тем, что использует preg_replace и str_replace? И с каких пор это считается большим недостатком? Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 декабря, 2017 Жалоба Поделиться Опубликовано 1 декабря, 2017 (изменено) И чем же он плох? Тем, что использует preg_replace и str_replace? И с каких пор это считается большим недостатком? если у вас сервер работает на https то правильного редиректа не произойдёт т.к. вы привязались к "http".поэтому лучше ссылаться не указывая сервер и протокол, а если указываете протокол, то указывайте через REQUEST_SCHEME+ к вышеизложенному, preg_replace также как и preg_match использует больше ресурсов. Да и зачем вобще в этом деле использовать эти функции? Всё что нам надо это узнать есть ли в конце слешь и какая категория идёт первая.+ считаю что вызов 6-ти функций, дольше чем вызов трёх (с учётом простой array_filter). Изменено 1 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 декабря, 2017 Жалоба Поделиться Опубликовано 1 декабря, 2017 Лучше обернуть в array_values чтобы сбросить ключи массива: $serv_uri = $_SERVER["REQUEST_URI"]; $uri = array_values(array_filter(explode("/", $serv_uri))); if($serv_uri != "/" && substr($serv_uri, -1) == "/" && $uri[0] != 'simpla')){ header("Location: /".implode("/",$uri), true, 301); exit(); } Цитата Ссылка на сообщение Поделиться на другие сайты
miltonmors Опубликовано 1 декабря, 2017 Жалоба Поделиться Опубликовано 1 декабря, 2017 + к вышеизложенному, preg_replace также как и preg_match использует больше ресурсов. Да и зачем вобще в этом деле использовать эти функции? Всё что нам надо это узнать есть ли в конце слешь и какая категория идёт первая.+ считаю что вызов 6-ти функций, дольше чем вызов трёх (с учётом простой array_filter). Формально Вы правы, но собственно экономия тут мизерная. В Вашем последнем варианте из #20 используется 5 функций: array_values, array_filter, explode, substr, implode. если уж наводить экономию, то как-то получше, примерно так: $serv_uri = $_SERVER["REQUEST_URI"]; if($serv_uri && substr($serv_uri, 0,7) !='/simpla'){ $uri = rtrim($serv_uri, "/"); if($serv_uri != $uri){ header("Location: ".$uri); exit(); } } Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 3 декабря, 2017 Жалоба Поделиться Опубликовано 3 декабря, 2017 (изменено) Согласен, либо просто не использовать array_filter и array_values и проверять по 1-ом индексу массива, а не по нулевому. $serv_uri = $_SERVER["REQUEST_URI"];$uri = explode("/", $serv_uri);if($serv_uri != "/" && substr($serv_uri, -1) == "/" && $uri[1] != 'simpla')){ header("Location: /".implode("/",$uri), true, 301); exit();}просто я в своей цмске изначально всегда разбивал строку по / и потом всё проверял, поэтому больше привык к такому методу.Собственно url rewrite который я пишу будет также работать. if($serv_uri....p.s. $serv_uri есть всегда, даже при загрузке индексной страницы он равен "/", поэтому эта проверка всегда будет возвращать true. Изменено 3 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
makki Опубликовано 12 февраля, 2018 Жалоба Поделиться Опубликовано 12 февраля, 2018 RewriteCond %{REQUEST_URI} !^/simpla RewriteRule (.+)/$ /$1 [L,R=301] Цитата Ссылка на сообщение Поделиться на другие сайты
Плохиш Опубликовано 12 февраля, 2018 Жалоба Поделиться Опубликовано 12 февраля, 2018 RewriteCond %{REQUEST_URI} !^/simpla RewriteRule (.+)/$ /$1 [L,R=301] Если встретится статичная страница с адресом, например, //site.ru/simpla_and_templates/, то не сработает правило. Цитата Ссылка на сообщение Поделиться на другие сайты
makki Опубликовано 12 февраля, 2018 Жалоба Поделиться Опубликовано 12 февраля, 2018 (изменено) Разве такие страницы есть изначально в Simpla? Если решать это посредством PHP такой проблемы не будет? Изменено 12 февраля, 2018 пользователем makki Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.