Название темы Раздел Ответов Последний

Убрать ID новости из URL адреса публикации на DLE


08 августа 2013
Убрать ID новости из URL адреса публикации на DLE

При добавлении нового материала каждой новости автоматически присваивается ID, который в последствии вставляется в URL адрес новости. Хак убирает ID вставку и переадресует со старых адресов новостей на новые. Работает со всеми версиями движка, начиная с 8.5

Как убрать ID публикации из URL новости:

1. Открываем файл /engine/engine.php и ищем код:

// ################ Новость целиком #################
if ($subaction != '' or $newsid) {
if (! $newsid) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where id = '$newsid'";

if ($subaction == '') $subaction = "showfull";
}
}


заменяем на:
// ################ Новость целиком #################  
if ($subaction != '' or $_GET['newsid']) {
if (! $_GET['newsid']) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where alt_name = '{$_GET['newsid']}'";

if ($subaction == '') $subaction = "showfull";
}
}


2. В файлах /engine/modules/show.short.php, show.custom.php, topnews.php ищем:

 if( $row['category'] and $config['seo_type'] == 2 ) {  

$full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";

} else {

$full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";

}

} else {

$full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
}

} else {

$full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];

}


и заменяем на:

if( $row['category'] and $config['seo_type'] == 2 ) {  

$full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['alt_name'] . ".html";

} else {

$full_link = $config['http_home_url'] . $row['alt_name'] . ".html";

}

} else {

$full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
}

} else {

$full_link = $config['http_home_url'] . "index.php?newsid=" . $row['alt_name'];

}


3. Открываем файл /.htaccess и ищем:

RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L] 


заменяем на:

RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L] 


ищем:

RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L] 


заменяем на:

RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L] 


вырезаем и вставляем в самый конец файла следующий код:

# Сам пост
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&cstart=$5&news_name=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$ engine/print.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_name=$4 [L]

RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3 [L]
RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L]

RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2 [L]
RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L]


4. Что бы со старых типов ссылок шло перенаправление на ссылки нового вида необходимо открыть файл /engine/modules/show.full.php, найти код:

@header( "HTTP/1.0 404 Not Found" ); 
msgbox( $lang['all_err_1'], $lang['news_err_12'] );
}


и заменить на:

preg_match("/([0-9]*)-(.+?).html$/i", $_SERVER["REQUEST_URI"], $res); 
if(intval($res[1]) > 0){
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$config['home_url'].$res['2'].'.html');
exit;
}


найти:

$news_found = TRUE;


ниже добавить:

if($config['allow_alt_url'] == "yes"){

preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );

if($row['alt_name'] != trim($parse_alt_name[1]) )$news_found = FALSE; if( !$news_found ) break;

}


ava

Написал: top103
Группа: Посетители Пользователь offline
1
0
9 декабря 2013 23:47
Спасибо все отлично работает

ava

Написал: 06shurik
Группа: Анонимус
2
0
22 февраля 2014 21:02
что он для seo интересного дает?

ava

Написал: YWjaCnNrK
Группа: Анонимус
3
0
9 апреля 2014 13:27
tramadol for dogs with arthritis - buy tramadol without prescriptions

ava

Написал: OJJuLpbKY
Группа: Анонимус
4
0
10 апреля 2014 07:12
tramadol overdose hallucinations - buy tramadol online no prescription

ava

Написал: loloshe4ko
Группа: Анонимус
5
0
20 апреля 2014 08:46
с точки зрения СЕО - это Бессмысленое занятие, чисто для самоудовлетворения.


Информация
Посетители, находящиеся в группе Анонимус, не могут оставлять комментарии к данной публикации.