Данный мод, позволит отслеживать вам откуда приходят ваши посетители, а также какими поисковыми запросами воспользовались на таких популярных поисковиках как yandex.ru, google.ru, rambler.ru, aport.ru, mail.ru и nigma.ru
1. Нужен хостинг с PHP и MySQL
2. Заходим в phpMyAdmin и выполняем этот запрос:
Code
CREATE TABLE allcity_referer(
`id` int(11) NOT NULL AUTO_INCREMENT ,
`url` varchar(255) NOT NULL default ”,
`title` varchar(255) NOT NULL default ”,
`engine` varchar(255) NOT NULL default ”,
`date` varchar(20) default NULL default ‘0’,
PRIMARY KEY (`id`)
) ENGINE = MYISAM ;
3. Закачиваем содержимое этого файла в корень php сайта (хоста):
Скачать
и настраиваем DB настройки и не только
4. В любое место шаблона (желательно на каждой странице):
Code
У нас нашли:
<div id=”SerEngiDIV”>Загрузка…</div>
<script type=”text/javascript”>
$.getScript(‘http://phpserv.com/ref.php?page=’+encodeURIComponent(document.referrer), function(){$(‘div#SerEngiDIV’).html(SerEngiData)});
</script>
где phpserv.comзаменяем на свое
5. В CSS:
Code
/* === У нас нашли! – START === */
.RefRow {padding: 1px;}
/* === У нас нашли! – END === */
Вот впринципе и все
Источник:Allcity
Живой пример:Allcity
Данный мод, позволит отслеживать вам откуда приходят ваши посетители, а также какими поисковыми запросами воспользовались на таких популярных поисковиках как yandex.ru, google.ru, rambler.ru, aport.ru, mail.ru и nigma.ru
1. Нужен хостинг с PHP и MySQL
2. Заходим в phpMyAdmin и выполняем этот запрос:
Code
CREATE TABLE allcity_referer(
`id` int(11) NOT NULL AUTO_INCREMENT ,
`url` varchar(255) NOT NULL default ”,
`title` varchar(255) NOT NULL default ”,
`engine` varchar(255) NOT NULL default ”,
`date` varchar(20) default NULL default ‘0’,
PRIMARY KEY (`id`)
) ENGINE = MYISAM ;
3. Закачиваем содержимое этого файла в корень php сайта (хоста):
Скачать
и настраиваем DB настройки и не только
4. В любое место шаблона (желательно на каждой странице):
Code
У нас нашли:
<div id=”SerEngiDIV”>Загрузка…</div>
<script type=”text/javascript”>
$.getScript(‘http://phpserv.com/ref.php?page=’+encodeURIComponent(document.referrer), function(){$(‘div#SerEngiDIV’).html(SerEngiData)});
</script>
где phpserv.com заменяем на свое
5. В CSS:
Code
/* === У нас нашли! – START === */
.RefRow {padding: 1px;}
/* === У нас нашли! – END === */
Всё
Кому помог +1
Внимание! В DataLife Engine найдена довольно серьезная уязвимость в версиях DLE 11.2 и ниже. Взлом DLE 11.2 и ниже (степень опасность высокая), позволяющая получить права админа на вашем сайте. Недостаточная фильтрация данных на DLE 11.2 и ниже, степень опасность определена, как высокая. При это разработчики вместо, того чтобы создать новую тему поступили подленько, вставили код в старой статье. Многие могли бы пропустить и по сути потерять данные сайта, где злоумышленник может удалять статьи и пользователей, ставить им рейтинги другие вещи, которые разрешены у вас на сайте администрации.
Проблема: Недостаточная фильтрация данных.
Ошибка в версии: DataLife Engine 11.2 и ниже
Степень опасности: Высокая
Для исправления откройте файл: /engine/go.php и найдите:
$url = @str_replace ( "&", "&", $url );
ниже добавьте:
$url = htmlspecialchars( $url, ENT_QUOTES, $config['charset'] );
$url = str_replace ( "&", "&", $url );
Далее откройте файл: /engine/ajax/typograf.php и найдите:
$txt = trim( convert_unicode( $_POST['txt'], $config['charset'] ) );
ниже добавьте:
require_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter();
$txt = $parse->process( $txt );
$txt = preg_replace( "/javascript:/i", "jаvascript:", $txt );
$txt = preg_replace( "/data:/i", "dаta:", $txt );
Советуем сделать ещё, как описано здесь, вот так выглядела статья изначально.
Но, как только появилась уязвимость в апреле 2017, разработчики к своего стыду просто дописали код в новость марта шестого числа (06.2017)
Внимание! У Вас нет прав для просмотра скрытого текста.
Сложно мыло сообщить о новой уязвимости, подобные действия могут запутать людей, думая что они уже сделали защиту пропустить строчку ниже.
- 100
Предыстория:
С 2013 по 2016 год, я вел сайты разных тематик созданных на движке WordPress. Для продвижения сайта в Топ10 по большинству запросов, достаточно было заказать прогон и получить около 1000 ссылок. Золотые были времена.
Но продолжалось это недолго, алгоритм стал меняться и сайты попали под фильтр поисковиков. Создавать все сначала у меня не было желания, и я принял решение бросить это дело.
Наши дни:
В середине сентября 2020 года, я решил попробовать снова создать свой сайт. Остается только выбрать тематику, купить домен и хостинг. В коммерцию я решил не залазить, ее и так хватает. Решил взять тему “игры и приложения для андроид”. Телефоны есть у всех, а значит актуально.
Купил домен, хостинг и установил знакомый мне движок ВордПресс. Написал пару обзоров на игры, в которые ранее играл и начал подбирать шаблон для сайта. Пару дней перебирал разные шаблоны, но ни один не подходил к данной тематике. А на темы, которые хоть как-то подходили, требовалась дополнительная установка от 6-8 плагинов, что снижало скорость загрузки сайта почти вдвое.
Открыв первую страницу по запросу “Игры на андроид”, и проанализировав все десять сайтов, я увидел, что все они созданы на движке DLE. Что тут скромничать, я впоследствии проверил все пять страниц из поиска, а это 50 сайтов и все они также были созданы на DLE. Ни одного сайта на движке WordPress там не было.
Начал разбираться, что это за зверь такой и почему все эти сайты строятся на нем.
Плюсы:
Во-первых. Скорость загрузки сайтов на DLE быстрее, чем на WordPress.
Во-вторых. Функционал для создания сайта больше, что позволяет построить сайт под любые ваши потребности.
Но тут конечно есть и обратная сторона медали.
Минусы:
Работать нужно с кодом, чтобы что-то создать.
Движок DLE платный, но пробная версия позволяет разместить до 200 статей.
Шаблоны, скрипты и плагины к движку платные.
Раз решил начинать, то отступать не в моих привычках. Стал искать информацию: “Как создать сайт на DLE?”. Но, к сожалению, информации в открытом доступе почти нет. А то, что есть, просто инфа ни о чем. Значит нужно искать того кто сможет его сделать.
Вбиваю в поиск: “Заказать сайт на DLE” и смотрю ценник. В среднем это 50-60 тыс. рублей. Дороговато…. Начинаю искать дальше.
Захожу на сайт kwork.ru, и смотрю эту услугу там. Цена услуги 20-30 тыс. рублей. Уже приятней… Полазив на нем еще некоторое время, нашел исполнителя и написал ему в личку, рассказав о том что меня интересует. Пришел ответ. –“Смогу сделать все, что вы описали, цена 10.000р”.
Пол дня поисков и получилось сэкономить минимум 10 тыс. Прикольно…
Заказываю услугу и начинаем работу. Скинул ему данные для входа в личный кабинет хостинга, чтобы он установил мне движок DLE, а сам начал искать шаблон для будущего сайта.
Как оказалось готовых шаблонов всего несколько видов. Теперь понятно, почему все сайты с играми на андроид похожи друг на друга :). Скачал бесплатный шаблон и переслал вебмастеру.
Через несколько часов, получаю от него ответ, что шаблон не полный и коряво отображается на сайте. Открываю сайт и вижу, что все в квадратиках. Значит халява не проканала, шаблон нужно покупать. Ранее я уже говорил, что шаблоны, плагины и скрипты платные.
Нашел этот шаблон за 10 долларов и купил. Отправил мастеру и через час шаблон был установлен и отображался нормально. Осталось до верстать на сайте: фавикон, лого, категории и другие мелочи, которые я делал на ВордПресс сам, а тут сделать не могу. Точнее не знаю как.
После всей наладки, он записал видео для меня, как работать со статьями и несколько рекомендаций. В общем, парень сделал все качественно. Теперь мой сайт выглядит так. Можете перейти осмотреть главную страницу и страницы статей, сравнить отличие между сайтами, сделанных на ВП, Тильда и DLE.
К чему я это все написал?
Как я уже ранее сказал, что информации как сделать сайт на DLE в интернете почти нет, и многие, сталкиваясь с этой проблемой, просто делают шаг назад и не продолжают искать другие решения.
WordPress, конечно хорошо, просто и понятно, но скорость загрузки сайта медленней, чем на DLE. А поисковики, нынче отдают приоритет скорости.
Как по мне, то ВордПресс, Тильда, Джумла и другие движки отживают свое. Поисковики не зря стали делать акцент на скорость.
В чем-то я уже разобрался сам и смогу вам помочь советом. Там есть много тонкостей в карте сайта, как установить микро разметку на DLE и т.д . В общем, чем смогу помогу. Задавайте вопросы, постараюсь на них доступно ответить.
Привет, друзья. Хочу представить вашему вниманию вторую часть из цикла статей про засеошивание движка Datalife Engine. И сегодня мы поговорим об очень щекотливом моменте — дублирование контента, связанное с отображением одной и той же страницы по разным адресам url.
Давайте вспомним одно из самых основных правил оптимизации сайта — страница должна быть доступна только по одному url! К сожалению, при разработке движка DLE, программисты не сильно озаботились этим моментом и забили, а может не подумали, или просто понадеялись, что никто не станет баловаться с адресами, а все пользователи сети, распространяя наш контент посредствам оставления внешних ссылок на форумах или соцсетях, будут соблюдать структуру нашего сайта и правильность адресов. Ага, как бы ни так…
А ведь однажды нарушенная ссылка может привести к размножению таких «неправильных» ссылок, которые повлекут за собой появление «неправильных» страниц, что однозначно скажется пагубно на нашем сайте!
И цель сегодняшнего поста — предотвратить появление таких вот «неправильных» страниц, а так же избавиться от уже появившихся. И самое главное — надо сделать так, чтобы «неправильные» ссылки вели на нужные (т.е. «правильные») страницы.
Пост обновлен 5 мая 2014 года:
Обновлены вносимые в движок изменения, добавлена поддержка новых версий движка.
Актуально для следующих версий DLE: 7.x, 8.x, 9.x, 10.x!
Другие части SEO-руководства:
Часть 1, Оптимизация заголовков Title — https://alaev.info/blog/post/2373
Часть 3, Особенности внутренней оптимизации движка — https://alaev.info/blog/post/3294
Часть 4, Исправление для версий DLE 9.3, 9.4, 9.5, 9.6 — https://alaev.info/blog/post/3513
Для начала нам необходимо оценить размах трагедии, понять какие и в каком количестве могут появиться дубли.
Для удобства понимания я оформил все в виде таблички, где вы можете в первом столбце увидеть, какие дубли могут возникнуть, а во втором столбце указана основная страница, на которую должен быть осуществлен 301 редирект, если сделать все правильно!
Возможный дубль | 301 | Основная страница |
Главная страница (http://site.ru) | ||
http://www.site.ru | -> | http://site.ru |
http://site.ru/index.php | -> | http://site.ru |
http://site.ru/page/1/ | -> | http://site.ru |
Страница категории (http://site.ru/category/) | ||
http://site.ru/category | -> | http://site.ru/category/ |
http://site.ru/category/page/1/ | -> | http://site.ru/category/ |
Страница субкатегории, если есть вложенность (http://site.ru/cat/subcat/) | ||
http://site.ru/cat/subcat | -> | http://site.ru/cat/subcat/ |
http://site.ru/cat/subcat/page/1/ | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat/ | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat/page/1/ | -> | http://site.ru/cat/subcat/ |
Страница материнской категории, если есть вложенность (http://site.ru/cat/) | ||
http://site.ru/cat | -> | http://site.ru/cat/ |
http://site.ru/cat/page/1/ | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat/ | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat/page/1/ | -> | http://site.ru/cat/ |
Страница полной новости, которая пусть принадлежит категории truecat (http://site.ru/truecat/123-news-name.html) | ||
http://site.ru/truecat/123-bla-bla-bla-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/fakecat/123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/truecat/page,1,1,123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
Как видите, дублей дофига и больше! И чем сложнее структура сайта, тем больше вероятность появления неожиданностей. Так или иначе, но прочитав данный пост до конца, вы сможете решить все эти проблемы, а внутренние дубли контента вас никогда больше не потревожат.
Тут очень важный момент про слово «никогда» — подразумевается, что после обновления движка до новой версии, вы снова проверите свой сайт на наличие проблем и при необходимости внесете все правки!
Еще одно очень важно отступление! Перед внесением правок проверьте версию установленного у вас движка. Разработчики с недавнего времени все-таки начали обращать внимание на описанные проблемы, а потому постепенно их исправляют. Так что некоторые моменты уже решены в последних версиях, и я об этом помню, и перед каждой правкой я буду акцентировать ваше внимание на том, для какой версии это актуально, а для какой нет.
На момент написания поста последняя версия движка DLE 9.5. Важно знать, что начиная с версии 9.3 разработчики решили некоторые проблемы – избавились от возможного дублирования, связанного с просмотром полной новости и некоторых проблем с категориями. В любом случае, я рекомендую всем и всегда обновляться до последней версии.
Итак, если вы понимаете о чем я написал выше, то приступайте к дальнейшему изучению.
Склейка зеркал — выбираем главное зеркало www.site.ru или site.ru
Актуальность: Все версии DLE. Проверено на 7.x, 8.x, 9.x, 10.x.
Какие проблемы решаем:
- Полное дублирование сайта по адресам http://site.ru и http://www.site.ru
Раскрыть список правок
Открываем файл .htaccess, который находится в корне сайта (это там, где лежит основной index.php)
НАХОДИМ:
НИЖЕ ДОБАВЛЯЕМ:
(если в качестве основного зеркала выбран http://site.ru)
### START Определяем главное зеркало как site.ru (site.ru заменить на свой домен, например alaev.info) RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] ### END Определяем главное зеркало
(если в качестве основного зеркала выбран http://www.site.ru)
### START Определяем главное зеркало как www.site.ru (www.site.ru заменить на свой домен, например www.alaev.info) RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L] ### END Определяем главное зеркало
Скрыть список правок
Теперь не важно, как пользователи будут в браузере вводить адрес сайта, с www или без — будет осуществляться редирект на основное зеркало сайта. Так же не важно, каким образом стоят внешние ссылки на сайт — вес всех входящих ссылок сохранится и суммируется для основного зеркала.
Убираем index.php и index.html из адреса главной страницы
Актуальность: Все версии DLE. Проверено на 7.x, 8.x, 9.x, 10.x.
Какие проблемы решаем:
- Дублирование главной страницы по адресам http://site.ru, http://site.ru/index.php и http://site.ru/index.html
Раскрыть список правок
Открываем файл .htaccess, который находится в корне сайта (это там, где лежит основной index.php)
В САМЫЙ КОНЕЦ ДОБАВЛЯЕМ:
### Редиректы с index.php или index.html на сайт RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html) HTTP/ RewriteRule .* / [R=301,L]
Скрыть список правок
Теперь не будет возникать самого распространённого дубля главной страницы, а так же дублей категорий и других разделов.
Склеиваем адреса страниц /page/1/ с основными адресами для главной страницы и категорий
Актуальность: Все версии DLE. Проверено на 7.x, 8.x, 9.x, 10.x.
Какие проблемы решаем:
- Дублирование главной страницы сайта по адресам http://site.ru/page/1/ и http://site.ru/
- Дублирование основной (первой) страницы категории по адресам http://site.ru/category/page/1/ и http://site.ru/category/
Раскрыть список правок
Открываем файл .htaccess, который находится в корне сайта (это там, где лежит основной index.php)
НАХОДИМ:
### END Определяем главное зеркало
НИЖЕ ДОБАВЛЯЕМ:
### START Редирект с первой страницы на основную RewriteBase / RewriteRule ^(.*)page/1(/|)$ $1 [R=301,L] ### END Редирект с первой страницы на основную
Для подстраховки или если вариант с .htaccess не сработал. Открываем файл /engine/engine.php
НАХОДИМ:
if (($subaction == "showfull" or $subaction == "addcomment") and ((! isset ( $category ) or $category == ""))) {
ВЫШЕ ДОБАВЛЯЕМ:
if ( (intval($_GET['cstart']) == 1) && (strpos($_SERVER['REQUEST_URI'], '/page/1') !== false) ) { $first_page_url = str_replace ( "/page/1", "", $_SERVER['REQUEST_URI'] ); header("HTTP/1.0 301 Moved Permanently"); header("Location: $first_page_url"); die("Redirect"); }
Скрыть список правок
Теперь при вводе неправильного адреса с /page/1/ на конце, будет осуществляться редиректить на основную страницу.
Устраняем неразбериху с категориями их вложенностью и слешем / на конце
Актуальность: Только версии DLE 8.2-9.2. Для DLE 9.3 и выше необходимо ОБЯЗАТЕЛЬНО в настройках движка активировать опцию «Обрабатывать неверные URL ЧПУ».
Какие проблемы решаем:
- Дублирование страниц категорий по адресам без слеша и со слешем на конце
- Дублирование страниц пагинации по адресам без слеша и со слешем на конце
- Дублирование страниц категорий и подкатегорий при нарушении иерархии(вложенности)
Раскрыть список правок
Открываем файл /engine/engine.php (смотрим в районе 170-180 строки)
НАХОДИМ:
if ($do == "cat" and $category != '' and $subaction == '') {
НИЖЕ ДОБАВЛЯЕМ:
//решение проблемы с категориями, редирект на верный урл, добавление слеша в конец if( $config['allow_alt_url'] == "yes" AND $category_id AND $view_template != "rss") { $re_cat = get_url( $category_id ); if ($re_cat != $_GET['category'] OR substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' ) { $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) ); $re_url = reset ( $re_url ); header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}{$re_cat}/"); die("Redirect"); } } //решение проблемы с категориями, редирект на верный урл, добавление слеша в конец
Скрыть список правок
Теперь не будет никакой неразберихи в url’ах адресов категорий и подкатегорий. Для всех неправильных вариантов будет осуществляться 301-редирект на основную правильную страницу.
Устраняем проблему с дублированием полной новости по разным адресам
Актуальность: Только версии DLE 8.2-9.2. Для DLE 9.3 и выше читайте исправление ошибок новых версий DLE 9.3, 9.4, 9.5, 9.6.
Какие проблемы решаем:
- Дублирование новостей, разбитых на страницы, когда существовали две одинаковые страницы по адресам site.ru/page,1,123-news_name.html и site.ru/123-news_name.html
- Дублирование новостей с комментариями, разбитыми на страницы, когда существовали две одинаковые страницы по адресам site.ru/page,1,1,123-news_name.html и site.ru/123-news_name.html
- Дублирование новости, когда осуществлялся переход на несуществующую страницу комментариев
- Дублирование новости при ошибке в названии новости, например, site.ru/123-bla_bla_news_name.html — сработает редирект на правельный адрес site.ru/123-news_name.html
Раскрыть список правок
Открываем файл /engine/modules/show.full.php
НАХОДИМ:
} else { $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id']; $print_link = $config['http_home_url'] . "engine/print.php?newsid=" . $row['id']; $short_link = ""; }
ВЫШЕ ДОБАВЛЯЕМ:
//обработка неправильного alt-name и 301 редирект $true_link = $config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1); if ($row['allow_comm']) { //если разрешены комменты $conf_comm_by_page = intval( $config['comm_nummers'] ); // комм на стр из настроек $news_comm_num = $row['comm_num']; // общее кол-во комм $comm_page_count = @ceil( $news_comm_num / $conf_comm_by_page ); if ( ($comm_page_count >= 2) && (intval($_REQUEST['cstart']) >= 2) ) $full_link = $link_page . intval($_REQUEST['cstart']) . "," . $news_name . ".html"; } if ($news_page >= 2) $full_link = $link_page . $news_name . ".html"; if ($true_link != $full_link) { header('HTTP/1.1 301 Moved Permanently'); header ('Location: ' . $full_link); die(); } //обработка неправильного alt-name и 301 редирект
Скрыть список правок
Итак, теперь при любых ошибках ввода url’а новости сайта будет осуществляться редирект на верный адрес — главным идентификатором в этом случае работает id новости.
Вот и все, друзья! Все проблемы, казавшиеся такими масштабными решились не такими уж и большими правками файлов движка. Теперь можете проверить любые проблемные адреса из указанных мной в начале поста — все будет обрабатываться так, как мы этого хотим, а правильнее сказать, все будет обрабатываться так как это полюбят поисковики, теперь у нас никогда не случится дублей!
Убираем слеш в конце url — редирект со страницы со слешем в конце на страницу без слеша
А теперь самый спорный пункт сегодняшнего руководства – разбираемся с дублями связанными с наличием слеша / в конце адресов категорий и страниц пагинации.
ВНИМАНИЕ!!! Правки, приведенные ниже, применимы ТОЛЬКО ДЛЯ ВЕРСИЙ DLE 8.x, 9.0 и 9.2. Если вы попробуете применить правки для любых других версий, это полностью выведет из строя ваш сайт!
Все, что написано ниже, предназначено для тех, кто последовал прошлой редакции моего руководства и убрал слеши в конце, чтобы избавиться от дублей.
Этот же мануал предназначен для тех, кому просто не нравится слеш в конце. Такие ведь бывают, да?
В любом случае, если вы собрались убрать слеш, надо будет проделать все, что описано выше (кроме пункта «Устраняем неразбериху с категориями их вложенностью и слешем / на конце»), а так же внести еще несколько изменений.
Обрабатываем категории:
Раскрыть список правок
Открываем файл /engine/engine.php и находим:
if ($do == "cat" and $category != '' and $subaction == '') {
НИЖЕ добавляем:
//решение проблемы с категориями, редирект на верный урл, удаление слеша в конец if( $config['allow_alt_url'] == "yes" AND $category_id AND $view_template != "rss") { $re_cat = get_url( $category_id ); if ($re_cat != $_GET['category'] OR substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) == '/' ) { $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) ); $re_url = reset ( $re_url ); header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}{$re_cat}"); die("Redirect"); } } //решение проблемы с категориями, редирект на верный урл, удаление слеша в конец
Скрыть список правок
Теперь сделаем проверку всех адресов на наличие слеша в конце, и если он есть — делаем 301 редирект на страницу без слеша.
Раскрыть список правок
Открываем наш любимый .htaccess и находим:
### END Определяем главное зеркало
НИЖЕ добавляем:
### START Убираем слеш в конце RewriteRule ^(.+)/$ $1 [R=301,L] ### END Убираем слеш в конце
Скрыть список правок
Внесенные правки делают только редирект, но в движке по умолчанию все адреса генерируются со слешем на конце, а следовательно без правки генерации адресов движка сам редирект почти бесполезен.
Убираем слеши из URL категорий, генерируемых движком:
Раскрыть список правок
Открываем файл /engine/modules/functions.php и ищем Функцию function get_categories ($id)
Находим строку:
if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $id ) . "/">{$cat_info[$id]['name']}</a>";
Заменяем на:
if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $id ) . "">{$cat_info[$id]['name']}</a>";
Находим строку:
if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $parent_id ) . "/">{$cat_info [$parent_id]['name']}</a>" . " » " . $list;
Заменяем на:
if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $parent_id ) . "">{$cat_info [$parent_id]['name']}</a>" . " » " . $list;
Скрыть данный список правок и раскрыть следующий
Убираем слеши из URL пагинации, генерируемых движком:
Раскрыть список правок
Открываем файл: /engine/modules/show.short.php
Находим строку:
$prev_page = $url_page . "/";
Заменяем на:
$prev_page = $url_page . "";
Находим строку:
$prev_page = $url_page . "/page/" . $prev . "/";
Заменяем на:
$prev_page = $url_page . "/page/" . $prev . "";
Находим:
$pages .= "<a href="" . $url_page . "/">$j</a> ";
Заменяем:
$pages .= "<a href="" . $url_page . "">$j</a> ";
Находим:
$pages .= "<a href="" . $url_page . "/page/" . $j . "/">$j</a> ";
Заменяем:
$pages .= "<a href="" . $url_page . "/page/" . $j . "">$j</a> ";
Находим:
if( $config['allow_alt_url'] == "yes" ) $pages .= "<a href="" . $url_page . "/">1</a> <span class="nav_ext">{$lang['nav_trennen']}</span> ";
Заменяем:
if( $config['allow_alt_url'] == "yes" ) $pages .= "<a href="" . $url_page . "">1</a> <span class="nav_ext">{$lang['nav_trennen']}</span> ";
Находим:
$pages .= "<a href="" . $url_page . "/">$j</a> ";
Заменяем:
$pages .= "<a href="" . $url_page . "">$j</a> ";
Находим:
$pages .= "<a href="" . $url_page . "/page/" . $j . "/">$j</a> ";
Заменяем:
$pages .= "<a href="" . $url_page . "/page/" . $j . "">$j</a> ";
Находим:
if( $config['allow_alt_url'] == "yes" ) $pages .= $nav_prefix . "<a href="" . $url_page . "/page/{$enpages_count}/">{$enpages_count}</a>";
Заменяем:
if( $config['allow_alt_url'] == "yes" ) $pages .= $nav_prefix . "<a href="" . $url_page . "/page/{$enpages_count}">{$enpages_count}</a>";
Находим:
$next = $url_page . '/page/' . $next_page . '/';
Заменяем:
$next = $url_page . '/page/' . $next_page . '';
Скрыть данный список правок и раскрыть следующий
Убираем слеши из URL профилей пользователей, генерируемых движком:
Раскрыть список правок
Открываем файл: /engine/modules/profile.php
Находим строку:
if( $config['allow_alt_url'] == "yes" ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/";
Заменяем на:
if( $config['allow_alt_url'] == "yes" ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] );
Скрыть данный список правок и раскрыть следующий
Убираем слеши из URL тегов, генерируемых движком:
Раскрыть список правок
Открываем файл: /engine/modules/show.short.php
Находим:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/">" . $value . "</a>";
Заменяем:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "">" . $value . "</a>";
Открываем файл: /engine/modules/tagscloud.php
Находим:
$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" class="{$value['size']}" title="".$lang ['tags_count']." ".$value['count']."">".$value['tag']."</a>";
Заменяем:
$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."" class="{$value['size']}" title="".$lang ['tags_count']." ".$value['count']."">".$value['tag']."</a>";
Находим:
$tpl->result['tags_cloud'] .= "<br /><br /><a href="".$config['http_home_url']."tags/">".$lang['all_tags']."</a>";
Заменяем:
$tpl->result['tags_cloud'] .= "<br /><br /><a href="".$config['http_home_url']."tags">".$lang['all_tags']."</a>";
Находим:
$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" class="{$value['size']}" title="". $lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";
Заменяем:
$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."" class="{$value['size']}" title="". $lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";
Открываем файл: /engine/modules/show.custom.php
Находим:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/">" . $value . "</a>";
Заменяем:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "">" . $value . "</a>";
Открываем файл: /engine/modules/show.full.php
Находим:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/">" . $value . "</a>";
Заменяем:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "">" . $value . "</a>";
Открываем файл: /engine/engine.php
Находим:
if ($config['allow_alt_url'] == "yes") $s_navigation .= " » <a href="" . $config['http_home_url'] . "tags/">" . $lang ['tag_cloud'] . "</a> » " . $tag;
Заменяем:
if ($config['allow_alt_url'] == "yes") $s_navigation .= " » <a href="" . $config['http_home_url'] . "tags">" . $lang ['tag_cloud'] . "</a> » " . $tag;
В очередной раз открываем .htaccess
Находим:
# вывод отдельному тегу RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L] RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
Заменяем:
# вывод отдельному тегу RewriteRule ^tags$ index.php?do=tags [L] RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L] RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
Скрыть данный список правок
Ну вот и все! Большую работу мы с вами проделали, однако. Но оно того стоило.
Я еще раз хочу обратить внимание на все изменения связанные с убиранием слеша на конце.
- Если вы продаете ссылки с сайта, я не рекомендую производить изменения, так как все проданные ссылки со страниц категорий/тегов/пагинации отпадут. Так как все же страницы со слешем и без него – разные страницы.
- Если вы однажды сделаете эти изменения, то в будущем вам придется их все время делать при обновлении движка. Так как в противном случае опять будут появляться страницы со слешем на конце.
- На самом деле, как бы это все страшно не звучало и не выглядело – это нормально и не вредно.
- Если вы не пользуетесь тегами, то вы можете избавить себя от большого объема работы, связанного с их переработкой. В таком случае, все, что ниже заголовка «Убираем слеши из тегов генерируемые движком», можно игнорировать.
- Вступление всех изменений в силу требует времени. Это связано с переиндексацией сайта поисковыми системами. Так что терпенье, друзья, только терпение. Для больших сайтов терпение измеряется 1-2 месяцами.
Пожалуйста, обратите внимание! Пост периодически обновляется, так что некоторые комментарии могут ввести вас в заблуждение. С осторожностью относитесь к сторонним вариантам правок, описанным в комментариях.