Все для DataLife Engine / DLE хаки / Хак для DLE / DLE хак убрать ID новости из URL адреса публикации

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


DLE хак убрать ID новости из URL адреса публикации для DataLife Engine 10-ых версий движка, хак будет полезен для тех, кто хочет скрыть ID новости, сделать вид УРЛ привычным, а главное усилить СЕО значимость сайта. Как вы наверное заметили при добавлении нового материала каждой публикации присваивается ID номер, который автоматически вставляется в URL адрес новости в ДЛЕ. Так как в настройках движка нет возможности отключить данную функцию, можно воспользоваться хаком, чтобы вставка ID новости больше не делалась. А старые адреса будут переадресованы на адреса с новыми урлами. Работает со всеми версиями движка, начиная с 8.5 .

Эта инструкция даст вам понять, Как убрать 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]


Поступило сообщение, что в коде выше есть ошибка, а точнее пробле в нескольких местах (day= $3), если проблем убрать, то тогда хак работает, вот так
# Сам пост
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, архив с данной установкой

DLE-hak-ubrat-ID-novosti-iz-URL-adresa-publikacii.rar [7,03 Kb] (cкачиваний: 324)
  • 60

Комментарии 8

ufff от 24 июля 2014 16:19
Кому нужна данная реализация - обращайтесь.
Актуально для новых версий включая 10.2
Не бесплатно! :)
Внимание! У Вас нет прав для просмотра скрытого текста.
dle9.com от 19 мая 2014 16:53
Цитата: Delacrua
Как я понимаю в Sitemap`е адреса по прежнему будут идти с цифрами.

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

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

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

писал платону, они сами не знают с чем это связано, никаких санкций нету, попросили прислать все 1000с которые вылетели
par14ok от 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]

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

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

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

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent