14.12.13, 19:22
1 комментарий
  DLE Хаки

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

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

Установка:

Как убрать 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;
}



Версия DLE: 8.5-10.1
Автор: Неизвестен

Реклама

Комментарии

  1. kreditko 19 октября 2014 18:06                    

    блять, сайт не открывается теперь 10.0

    вы сами то хоть пробовали данный хак?

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

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204