| После установки сайта на движке DataLife Engine (Dle) его в первую очередь нужно настроить. Сделать это очень просто: Из файла engine/engine.php удаляем строчку, которая находится уже практически в конце: Quote <meta name="generator" content="DataLife Engine (http://dle-news.ru)" /> И из файла index.php (в корне сайта) удаляем строчку в самом конце файла: Quote echo "\n<!-- DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) -->\r\n"; Таким образом, мы избавились от 2-х совершенно ненужных внешних ссылок. Далее будем избавляться от лишних дублей. Все знают, что домен с www и без www совершенно разные домены, поэтому следует сделать редитект 301. Для этого в корне сайта открываем файл .htaccess и после строчек DirectoryIndex index.php RewriteEngine On вставляем: Quote RewriteEngine On RewriteCond %{HTTP_HOST} ^site.ru RewriteRule (.*) [url="http://www.site.ru/$1"]http://www.site.ru/$1[/url] [R=301,L] для переадресации домена без WWW на домен с WWW; Или же, наоборот, для переадресации домена с WWW на домен без WWW необходимо вставить: Quote RewriteEngine On RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ [url="http://site.ru/$1"]http://site.ru/$1[/url] [R=301,L] site.ru необходимо заменить на ваш домен. Но в Dle присутствуют и ещё дубли главной страницы вида: site.ru/index.php site.ru/index.html Их так же нужно исключить и для этого в файле .htaccess после нашей предыдущей записи нужно вставить: Quote 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]
Но и это ещё не всё. Как известно в дле есть 3 типа ЧПУ. И какой бы тип
ЧПУ вы не выбрали, страница с новостью всё равно будет доступна по всем
трем типам. Так новость всегда доступна по адресам: http://site.ru/id-имя новости.html http://site.ru/категория/подкатегория/id-имя-новости.html http://site.ru/2008/04/02/имя-новости.html . По моему мнению, такое чудо Яндекс не одобрит, и поэтому я предлагаю вам такой способ решения: Для ЧПУ 1 (чтобы все ссылки были только [url="http://site.ru/id-имя"]http://site.ru/id-имя[/url] новости.html), в файле .htaccess надо найти: 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 ^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]
Для ЧПУ 2 (чтобы все ссылки были только
[url="http://site.ru/категория/подкатегория/id-имя"]http://site.ru/категория/подкатегория/id-имя[/url]
новости.html), в файле .htaccess надо найти: 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 ^([^.]+)/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]
НО!
И это ещё не всё, самый крупный баг/дубль это адрес новостей с
категориями. Так например новости 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; }
Заменить на: 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; }.
Так же в 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'];
На: if($nam_e) { $metatags['title'] = $nam_e; $rss_title = $metatags['title']; }
if($titl_e) $metatags['title'] = $titl_e;
Теперь перейдем к модулям. Самыми важными модулями считаю только 2. Это
pingationMod и twitterMod. Оба модуля помогают ускорить индексацию
свежих публикаций. А вот модуль pingationMod уже платный и его стоимость составляет 5$, да и null совершенно не рабочий.
|