Blog Archive
Настройка сайта на DLE
Сделать это очень просто:
Из файла engine/engine.php удаляем строчку, которая находится уже практически в конце:
Цитата
<meta name="generator" content="DataLife Engine (http://dle-news.ru)" />
И из файла index.php (в корне сайта) удаляем строчку в самом конце файла:
Цитата
echo "\n<!-- DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) -->\r\n";
Таким образом, мы избавились от 2-х совершенно ненужных внешних ссылок.
Далее будем избавляться от лишних дублей.
Все знают, что домен с www и без www совершенно разные домены, поэтому следует сделать редитект 301. Для этого в корне сайта открываем файл.htaccess и после строчек
DirectoryIndex index.php
RewriteEngine On
вставляем:
Цитата
для переадресации домена без WWW на домен с WWW;
Или же, наоборот, для переадресации домена с WWW на домен без WWW необходимо вставить:
Цитата
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$
site.ru необходимо заменить на ваш домен.
Но в Dle присутствуют и ещё дубли главной страницы вида:
site.ru/index.php
site.ru/index.html
Их так же нужно исключить и для этого в файле .htaccess после нашей предыдущей записи нужно вставить:
Цитата
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
Но и это ещё не всё. Как известно в дле есть 3 типа ЧПУ. И какой бы тип ЧПУ вы не выбрали, страница с новостью всё равно будет доступна по всем трем типам.
Так новость всегда доступна по адресам:
http://site.ru/id-имя новости.html
Код
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 ^([^.]+)/([0-9]+)-(.*).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 ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [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 ^([^.]+)/([0-9]+)-(.*).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 ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [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 ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]
RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]
Для ЧПУ 2 (чтобы все ссылки были только
Код
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 ^([^.]+)/([0-9]+)-(.*).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 ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [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 ^([^.]+)/([0-9]+)-(.*).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 ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [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 ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]
[b]НО! И это ещё не всё, самый крупный баг/дубль это адрес новостей с категориями. Так например новости 1-ya.html может быть доступна по адресам:
video/1-ya.html
news/1-ya.html
soft/1-ya.html
forum/1-ya.html
и вообще можно подставить в любую категорию. Хоть и ПС такое практически не находят, но шансы есть и их нужно свести совсем к нулю. Для этого необходимо в файле /engine/modules/functions.php
Код
function get_url($id) {
global $cat_info;
if( ! $id ) return;
$parent_id = $cat_info[$id]['parentid'];
$url = $cat_info[$id]['alt_name'];
while ( $parent_id ) {
$url = $cat_info[$parent_id]['alt_name'] . "/" . $url;
$parent_id = $cat_info[$parent_id]['parentid'];
if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
}
return $url;
}
global $cat_info;
if( ! $id ) return;
$parent_id = $cat_info[$id]['parentid'];
$url = $cat_info[$id]['alt_name'];
while ( $parent_id ) {
$url = $cat_info[$parent_id]['alt_name'] . "/" . $url;
$parent_id = $cat_info[$parent_id]['parentid'];
if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
}
return $url;
}
Заменить на:
Код
function get_url($id){
global $cat_info;
if(!$id) return;
if($cat_info[$id]['parentid']){
$url = $cat_info[$cat_info[$id]['parentid']]['alt_name'];
}else{
$url = $cat_info[$id]['alt_name'];
}
$parent_id = $cat_info[$id]['parentid'];
return $url;
}
global $cat_info;
if(!$id) return;
if($cat_info[$id]['parentid']){
$url = $cat_info[$cat_info[$id]['parentid']]['alt_name'];
}else{
$url = $cat_info[$id]['alt_name'];
}
$parent_id = $cat_info[$id]['parentid'];
return $url;
}
Так же в Dle есть такая недоработка/баг, как двойной title в новостях. Например:
Главная - Название сайта
Категория - Название категории - Название сайта
Новость - Название Новости - Название категории - Название сайта
Такое ПС тоже наврядли одобрят, поэтому убираем данную оплошность.
Открываем файл engine/engine.php и заменяем:
Код
if($nam_e) {
$metatags['title'] = $nam_e.' » '.$metatags['title'];
$rss_title = $metatags['title'];
}
if($titl_e) $metatags['title'] = $titl_e.' » '.$config['home_title'];
$metatags['title'] = $nam_e.' » '.$metatags['title'];
$rss_title = $metatags['title'];
}
if($titl_e) $metatags['title'] = $titl_e.' » '.$config['home_title'];
На:
Код
if($nam_e) {
$metatags['title'] = $nam_e;
$rss_title = $metatags['title'];
}
if($titl_e) $metatags['title'] = $titl_e;
$metatags['title'] = $nam_e;
$rss_title = $metatags['title'];
}
if($titl_e) $metatags['title'] = $titl_e;
Ярлыки:
Хаки для DLE
| Вверх
Подписаться на:
Комментарии к сообщению (Atom)
2 комментария
Вы просто не представляете, как спасли меня! Я весь день долбался с категориями. У меня при нажатии на категорию видеоролики и видеоролики/авто и мото попадал на одну и ту же страницу! А теперь все работает!
И вам спасибо за коммент!
Отправить комментарий