10.09.15, 01:28
1 комментарий
  DLE Хаки

SEO оптимизация DataLife Engine Часть 2

Вторая часть SEO оптимизации DataLife Engine, в статье описывается полное убирание слеша на конце в ссылках, разные редиректы которые убирают дубли и не существующие страницы сайта. Так же о XML и HTML карте и кроме этого работа с модулем DonBot который убирает с индекса не нужные дубли.

7) Убираем слешы на конце урла "/"

Убираем слешы
1) Открываем файл /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");
				}
			}
//решение проблемы с категориями, редирект на верный урл, удаление слеша в конец

2) Открываем файл .htaccess что в главной директории (там где index.php), находим код :
# Редиректы
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]

И выше вставляем :
# Убираем слеш в конце
RewriteRule ^(.+)/$ $1 [R=301,L]

3) Открываем файл /engine/modules/functions.php и находим код :
if( $config['allow_alt_url'] ) $list = "<a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\">{$cat_info[$id]['name']}</a>";

Меняем на:
if( $config['allow_alt_url'] ) $list = "<a href=\"" . $config['http_home_url'] . get_url( $id ) . "\">{$cat_info[$id]['name']}</a>";

Далее ищем код :
if( $config['allow_alt_url'] ) $list = "<a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\">{$cat_info[$parent_id]['name']}</a>" . "{$separator} " . $list;

И меняем на :
if( $config['allow_alt_url'] ) $list = "<a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "\">{$cat_info[$parent_id]['name']}</a>" . "{$separator} " . $list;

Далее ищем код:
if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";

И меняем на:
if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";

Далее ищем код:
if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list;

И меняем на:
if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list;

4) Открываем файл /engine/modules/show.full.php находим код (2 раза):
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";

И меняем на:
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "\">{$cat_info[$element]['name']}</a>";


Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!
Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/\">" . $value . "</a>";

И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "\">" . $value . "</a>";


Все с тегами покончили.

Далее ищем код (2 раза):
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";

Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "\">" . $value2 . "</a>";

Далее ищем код :
$short_link = $config['http_home_url'] . $c_url . "/";

Меняем на:
$short_link = $config['http_home_url'] . $c_url;

Далее ищем код:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $category_id ) . "/" );

Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $category_id ) );

Далее ищем код :
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";

Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );

5) Открываем файл /engine/modules/show.short.php находим код :
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";

Меняем на:
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "\">{$cat_info[$element]['name']}</a>";


Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!
Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/\">" . $value . "</a>";

И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "\">" . $value . "</a>";


Все с тегами покончили.

Далее ищем код :
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";

Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "\">" . $value2 . "</a>";

Далее ищем (2 раза):
pages .= "<a href=\"" . $url_page . "/\">$j</a> ";

Меняем на:
pages .= "<a href=\"" . $url_page . "\">$j</a> ";

Далее ищем код (2 раза):
$pages .= "<a href=\"" . $url_page . "/page/" . $j . "/\">$j</a> ";

Меняем на:
$pages .= "<a href=\"" . $url_page . "/page/" . $j . "\">$j</a> ";

Далее ищем код:
if( $config['allow_alt_url'] ) $pages .= "<a href=\"" . $url_page . "/\">1</a> <span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";

Меняем на:
if( $config['allow_alt_url'] ) $pages .= "<a href=\"" . $url_page . "\">1</a> <span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";

Далее ищем код:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) . "/" );

Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) );

Далее ищем код:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";

Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );

Далее ищем код:
$prev_page = $url_page . "/";

Меняем на:
$prev_page = $url_page;

Далее ищем код:
$prev_page = $url_page . "/page/" . $prev . "/";

Меняем на :
$prev_page = $url_page . "/page/" . $prev;

Далее ищем код:
$next = $url_page . '/page/' . $next_page . '/';

Меняем на:
$next = $url_page . '/page/' . $next_page;

6) Открываем файл /engine/modules/show.costum.php находим код :
$next = $url_page . '/page/' . $next_page . '/';

Меняем на:
$next = $url_page . '/page/' . $next_page;

Далее ищем код:
if( $config['allow_alt_url']) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";

Меняем на:
if( $config['allow_alt_url']) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "\">{$cat_info[$element]['name']}</a>";


Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!
Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/\">" . $value . "</a>";

И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "\">" . $value . "</a>";


Все с тегами покончили.

Далее ищем код:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";

Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "\">" . $value2 . "</a>";

Далее ищем (
2 раза
):
pages .= "<a href=\"" . $url_page . "/\">$j</a> ";

Меняем на:
pages .= "<a href=\"" . $url_page . "\">$j</a> ";

Далее ищем код (2 раза):
$pages .= "<a href=\"" . $url_page . "/page/" . $j . "/\">$j</a> ";

Меняем на:
$pages .= "<a href=\"" . $url_page . "/page/" . $j . "\">$j</a> ";

Далее ищем код :
if( $config['allow_alt_url'] ) $pages .= "<a href=\"" . $url_page . "/\">1</a> <span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";

Меняем на:
if( $config['allow_alt_url'] ) $pages .= "<a href=\"" . $url_page . "\">1</a> <span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";

Далее ищем :
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) . "/" );

Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) );

Далее ищем:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";

Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );

Далее ищем код:
$prev_page = $url_page . "/";

Меняем на:
$prev_page = $url_page;

Далее ищем:
$prev_page = $url_page . "/page/" . $prev . "/";

Меняем на:
$prev_page = $url_page . "/page/" . $prev;

7) Открываем файл /engine/init.php, находим код:
$tpl->set( '{profile-link}', $config['http_home_url'] . "user/" . urlencode ( $member_id['name'] ) . "/" );

Меняем на:
$tpl->set( '{profile-link}', $config['http_home_url'] . "user/" . urlencode ( $member_id['name'] ) );

8) Если вы не удаляли тегов, то делаем этот пункт!
Открываем файл /engine/modules/tagscloud.php, находи код (2 раза):
$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>";

Далее открываем файл /engine/engine.php, находим код (это продолжение того же 8 пункта):
if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;

Меняем на:
if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $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]

9) Открываем файл /engine/modules/profile.php, находим код:
if( $config['allow_alt_url'] ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/";

Меняем на:
if( $config['allow_alt_url'] ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] );[/spoiler]


8) Редирект с несуществующих страниц пагинации на правильные и существующие

Редирект с несуществующих страниц
Открываем файл /engine/modules/show.short.php и в самом низу находим:
}
?>

Выше вставляем:
//редирект на последнюю страницу, если в url указана страница больше чем максимально существующая
$all_pages_count = @ceil( $count_all / $config['news_number'] );
	if ($cstart > $all_pages_count) {
		if ($all_pages_count > 1) {
			header('HTTP/1.1 301 Moved Permanently');
			header ('Location: ' . $url_page . '/page/' . $all_pages_count . '/');
			die();
		} else {
			header('HTTP/1.1 301 Moved Permanently');
			header ('Location: ' . $url_page . '/');
			die();
		}
	} 
//редирект на последнюю страницу, если в url указана страница больше чем максимально существующая


9) Редирект с несуществующих страниц пагинации комментариев на правильные

Редирект с несуществующих страниц пагинации комментариев
Открываем файл /engine/classes/comments.class.php и в самом низу находим:
	}
 
}
?>

Выше вставляем:
//редирект на последнюю страницу комментариев, если в url указана страница больше чем максимально существующая
	if ( $this->cstart > $enpages_count ) {
		header('HTTP/1.1 301 Moved Permanently');
		header('Location: ' . $url);
		die();
	}
//редирект на последнюю страницу комментариев, если в url указана страница больше чем максимально существующая


10) Редирект со ссылок с лишними символами или неправильным окончанием на верные адреса

Редирект со ссылок с лишними символами
Открываем файл .htaccess что в главной директории (там где index.php), находим код :
# Редиректы
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]

Выше вставляем:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*)\.html(.+) [OR]
RewriteCond %{REQUEST_URI} ^(.*)\.htm$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)\.ht$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)\.h$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)\.$
RewriteRule ^(.*)\.(.*) $1.html [R=301,L]


11) Редирект с разделов или категорий, которых больше не существует, на главную страницу

Редирект с разделов или категорий которых больше не существует
Открываем файл /engine/engine.php и находим:
if (!$category_id) $category_id = 'not detected';

Меняем на:
//решение проблемы с категориями, которых не существует
			if (!$category_id AND $view_template != "rss") {
					header("HTTP/1.0 301 Moved Permanently");
					header("Location: {$config['http_home_url']}");
					die("Redirect");
			}
//решение проблемы с категориями, которых не существует


12) Редирект для публикаций, у которых отсутствует ID, на главную страницу

Редирект для публикаций у которых отсутствует ID
Открываем файл /engine/modules/static.php и находим в самом конце:
	@header( "HTTP/1.0 404 Not Found" );
	$lang['static_page_err'] = str_replace ("{page}", $name.".html", $lang['static_page_err']);
	msgbox( $lang['all_err_1'], $lang['static_page_err'] );

Меняем на:
// 301 редирект на главную с адресов страниц новостей, где пропал id, а так же несуществующих статических страниц
	header("HTTP/1.0 301 Moved Permanently");
	header("Location: {$config['http_home_url']}");
	die("Redirect");
// 301 редирект на главную с адресов страниц новостей, где пропал id, а так же несуществующих статических страниц


13) Редирект для удаленных или несуществующих новостей на главную

Редирект для удаленных или несуществующих новостей на главную
Открываем файл /engine/modules/show.full.php и находим:
	elseif( !$news_found ) {
		@header( "HTTP/1.0 404 Not Found" );
		msgbox( $lang['all_err_1'], $lang['news_err_12'] );
	}

Меняем на:
// 301 редирект на главную, если новость не найдена/не существует
	elseif( ! $news_found ) {
					header("HTTP/1.0 301 Moved Permanently");
					header("Location: {$config['http_home_url']}");
					die("Redirect");
	}
// 301 редирект на главную, если новость не найдена/не существует


14) Добавляем тег rel=”canonical” для страниц просмотра полной новости

Добавляем тег canonical
Открываем файл /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 = "";
			$link_page = "";
			$news_name = "";
 
		}

Ниже вставляем:
$full_canonical = $full_link;

Далее открываем файл /engine/engine.php и находим:
if ($config['allow_rss']) $metatags .= <<

Выше вставляем:
if ($full_canonical) {
 
	$metatags .= <<<HTML
 
<link rel="canonical" href="{$full_canonical}" />
HTML;
 
}


Автор статей : Gameer (http://igameer.ru/data_engine/19-seo_dle_2.html)

Комментарии

  1. Gameer 11 сентября 2015 21:42                    

    Ссылка на сайт источника должна быть http://igameer.ru/data_engine/19-seo_dle_2.html

Напишите своё мнение