prikindel 255 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 (изменено) Анализирую ошибки сайта в Яндекс-Вебместере, обнаружил, что есть сотни ошибок связанных с дублями страниц вида /page/xxx и page/xxx/ /tags/tagname и /tags/tagname/ /tags/tagname/page/xxx и /tags/tagname/page/xxx/ ну т.е. проблема со слэшем в конце, вернее с его отсутствием. в скрипте везде генерируются урлы и навигация со слэшем, не понимаю откуда яша видит урлы без слэша и тем более в таком количестве, ладно бы несколько десятков, может кто скопировал криво, а так - мне не ясно откуда собственно, вопрос: есть ли какие то изящные методы решить эту проблему, чтобы не строить костыли в engine.php, сравнивая текущий урл и правильный, и добавляя canonical или редирект 301 спасибо Изменено 15 декабря 2016 пользователем prikindel Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 5 часов назад, prikindel сказал: Анализирую ошибки сайта в Яндекс-Вебместере, обнаружил, что есть сотни ошибок связанных с дублями страниц вида /page/xxx и page/xxx/ /tags/tagname и /tags/tagname/ /tags/tagname/page/xxx и /tags/tagname/page/xxx/ ну т.е. проблема со слэшем в конце, вернее с его отсутствием. в скрипте везде генерируются урлы и навигация со слэшем, не понимаю откуда яша видит урлы без слэша и тем более в таком количестве, ладно бы несколько десятков, может кто скопировал криво, а так - мне не ясно откуда собственно, вопрос: есть ли какие то изящные методы решить эту проблему, чтобы не строить костыли в engine.php, сравнивая текущий урл и правильный, и добавляя canonical или редирект 301 спасибо лично я, использую такое решение в .htaccess причём уже давно RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} !/$ RewriteCond %{REQUEST_URI} !.html$ RewriteCond %{REQUEST_URI} !.xml$ RewriteRule (.+) $1/ [R=301,L] 1 Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 Автор вариант, спасибо надо будет только переделать под nginx Цитата Ссылка на сообщение Поделиться на других сайтах
SKYNET74 315 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 1 час назад, prikindel сказал: вариант, спасибо надо будет только переделать под nginx В новой версии пофиксили уже багу, обновляйтесь. Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 Автор в новой версии правил для вебсервера или в самом движке? Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 2 часа назад, prikindel сказал: в новой версии правил для вебсервера или в самом движке? в самом движке http://dle-news.ru/release/1705-datalife-engine-v112-final-release.html#sel=63:1,63:65 но там речь немного о другом. Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 Автор да, в пагинации категорий работает отлично в тэгах не работает Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 15 декабря 2016 Рассказать Опубликовано: 15 декабря 2016 Автор в общем, добавил в раздел TAGS engine.php по аналогии с категориями. теперь работает как нужно $re_cat = urlencode ($tag); if( $config['allow_alt_url'] AND $config['seo_control'] AND $re_cat!="" AND $view_template != "rss") { if (substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' OR $_GET['cstart'] == 1 ) { $re_url = "/tags/"; if(substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' AND $_GET['cstart'] AND $_GET['cstart'] != 1 ) { $re_cat .= "/page/".intval($_GET['cstart']); } header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}{$re_cat}/"); die("Redirect"); } } Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.