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

Рубрика: Хаки для DLE » Хак DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
DLE хак убрать ID новости из URL адреса публикации
DLE хак убрать ID новости из URL адреса публикации для DataLife Engine 10-ых версий движка, хак будет полезен для тех, кто хочет скрыть ID новости, сделать вид УРЛ привычным, а главное усилить СЕО значимость сайта. Как вы наверное заметили при добавлении нового материала каждой публикации присваивается ID номер, который автоматически вставляется в URL адрес новости в ДЛЕ. Так как в настройках движка нет возможности отключить данную функцию, можно воспользоваться хаком, чтобы вставка ID новости больше не делалась. А старые адреса будут переадресованы на адреса с новыми урлами. Работает со всеми версиями движка, начиная с 8.5 www.dle9.com

Эта инструкция даст вам понять, Как убрать ID публикации из URL новости в DLE:

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;
}


ВНИМАНИЕ! Если у вас много старых новостей, подумайте дважды, прежде чем делать данную установку. Многие страницы вылетят на время из индекса. Для новых ресурсов данных хак для dle 10.1 убрать ID новости из URL адреса публикаций подходит как нельзя лучше. Скачать хаки для dle, архив с данной установкой
  • 60
Рубрика: DLE хаки » Хак для DLE
Ранее » Напоминание пользователю загрузить аватарку хак Dle« Далее Хак DLE Самый просматриваемый материал за текущий день
Добавление комментарияОставить комментарий
  • № :8
  • 24 июля 2014 16:19
Кому нужна данная реализация - обращайтесь.
Актуально для новых версий включая 10.2
Не бесплатно! :)
Внимание! У вас нет прав для просмотра скрытого текста.
  • № :7
  • 19 мая 2014 16:53
Цитата: Delacrua
Как я понимаю в Sitemap`е адреса по прежнему будут идти с цифрами.

не известно, хотя если так, то это не очень хорошо
  • № :6
  • 19 мая 2014 16:22
Как я понимаю в Sitemap`е адреса по прежнему будут идти с цифрами.
  • № :5
  • 11 января 2014 07:30
Решил не ставить из-за геморроя, который по сей день в инете сомнительно об этом идет, а также проблематичности вполне хватает
(мозг взорвал за ночь)
  • № :4
  • 27 декабря 2013 14:06
Цитата: dle9
Цитата: snamp
1600 новостей, но из яндекса недавно вылетело 1000с, делать или нет?

Причина вылета из яндекса решена? Потом ещё гугл. Переиндексация может занять 2-3 месяца.

К тому же сомнительно, что хак даст какой-то большой плюс.

писал платону, они сами не знают с чем это связано, никаких санкций нету, попросили прислать все 1000с которые вылетели
  • № :3
  • 27 декабря 2013 00:41
Это говно выбрано со всего что есть на эту тему на сёрче я так понимаю, и на 10 и 10.1 работать не будет полностью. На 10.1 пробовал, вид ссылки меняет а вот с .htacess баян, в 10 ке таких строк как

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

и

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

НЕТ.
  • № :2
  • 25 декабря 2013 16:51
Цитата: snamp
1600 новостей, но из яндекса недавно вылетело 1000с, делать или нет?

Причина вылета из яндекса решена? Потом ещё гугл. Переиндексация может занять 2-3 месяца.

К тому же сомнительно, что хак даст какой-то большой плюс.
  • № :1
  • 25 декабря 2013 16:03
1600 новостей, но из яндекса недавно вылетело 1000с, делать или нет?