DedeCms 是公認的在SEO優化方面做得做好的CMS,可能很多人會說,優化是靠個人的,與CMS無關,這其實也不盡正確,因為必須程序提供商提供足夠的工具才有可能,舉例說:如果某CMS的欄目設置連關鍵字、摘要都沒有,何來優化之說?本文以DedeCMS為例,深入說明SEO優化方面的攻略,本文所說的優化絕對不是那種含emu的SEO策略,而是針對網站自身的內容,提高搜索引擎對內容的識別能力。; E+ _0 z6 A! j" G4 E) s
4 k6 f9 D# r$ T0 N
一.DEDE全局優化
% W9 r; ?& F- i" ]1 p1 ?- c( C1 F0 ^, R) P, P& \
在DedeCms的系統參數配置中,包含了「網站版權、編譯JS等底部調用信息;站點默認關鍵字;站點描述」這些項目,其實必須注意的是站點默認關鍵字、站點描述的設置必須合理。" _, C: `+ I; u
; S* d. H' |1 e( d5 h. X0 X# z
(1) 站點名稱和關鍵字是搜索引擎識別你這個網站內容的關鍵,其中在主頁的網站名稱可以手工填寫,在標題的地方適當增加一些關鍵字。
! J6 o. b& d+ d$ [/ h8 v
" s" Y( x9 t+ ^, n(2) 網站摘要(站點描述)必須要合理,最理想的寫法應該是「某某網站是關於某某方面的內容的網站」這裡千萬別堆砌關鍵字,否則可能會被搜索引擎視為emu或放棄使用你指定的這些描述作為站點描述。
; ?4 }! ^4 A% r' e) p$ ` u+ j' \) `' D) F/ \" L4 K* |1 E
(3) 對於新站而言,為了提高網站名的權重,還可以在底部放一些「某某網站的內容來自何處或版權所有之類」這裡也不能堆砌關鍵字或僅突出某一兩個關鍵字,僅是為了提高網站名的權重。
, z$ e6 w8 X& D8 L) a @7 ~5 N* m8 u9 O% _
二。欄目標題與關鍵字、摘要的合理SEO
+ n, u( o' R: h
# b% ] g8 G: m; g對於有耐心的用戶,在新建欄目時最好把欄目的關鍵字填寫完整,如果沒有耐心的,不妨用下面的方法。" H2 `" }; K5 U( `6 S* W' O* i0 C
4 g3 S* z9 h) Y在建好所有欄目後,到系統-》SQL命令行工具的地方運行下面的SQL:( a4 ?; s9 u3 s2 T' l0 ]$ [' ?
/ k. {4 b( b* Q& N+ m l4 A
Update `dede_arctype` set 5 F4 d0 h6 b" p0 q1 ]
keywords=Conact(typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』), 6 N9 k4 J! Q4 |, ~7 J: g
description=Conact(』本欄目主要是關於』, typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』, 『方面的內容』);
4 d& p: Y2 W4 U, e8 o- b( o
3 K% p* K7 T% ^三.核心文章內容的SEO
' i: ~+ l, E+ ^( n; [: C4 t& z5 f6 K
DedeCms 提供了自動關鍵字提取、自動摘要等各類工具來進行文檔的優化,不過有部份用戶往往習慣對本站所的文章都用同樣的關鍵字、同樣的摘要,這種方法是極不可取的,如果在沒法獲得關鍵字和摘要的情況下,寧可放棄這些描述,讓搜索引擎自動生成。
0 P$ Z6 s1 k# r4 x. e+ D* A( O5 G' ~& o0 r% L
使用DedeCms時,需要進行如下更改:6 l. B _" J8 |: b$ J X# f
! z" s3 z( \3 W ^(1) 對於多頁的文章 DedeCms 的標題默認沒有1、2、3之類的標識,這裡可以打開 arc.archives.class.php
. F E9 Z2 i/ C( M' T9 {+ q6 H, g* D& E9 |6 H2 G
在大約是 350 行左右的地方找到「//循環生成HTML文件」,然後把for循環起始的地方改為% ?% v$ b) @, c' O1 }& f. r. h5 x
" C* d& |1 ~8 r7 k6 L0 v3 v: ]
for($i=1;$i<=$this->TotalPage;$i++)
. ~. q4 P$ M6 b5 R- i( u( b{
0 e# S& m+ z! @. \if($this->TotalPage > 1) { 1 \, I% \# S# [9 k: P, Z* f
$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields n% [$ ~; M" J; D
( u' X3 U. \6 M( l5 c['tmptitle']); - T" d; M; B0 O; r' H6 z
$this->Fields['title'] = $this->Fields['tmptitle'].」($i)」;
* {4 {3 a4 \2 {! Z7 ~7 ]* c1 W}
' T4 p0 i$ ?2 l' I1 \1 \& R6 c7 [8 S- R3 n2 J I, \# G
6 { k- \& P- Q這樣就能使多頁文章的標題帶有(1)、(2)、(3)… 的標識了。
1 s0 _7 d. i/ E6 C/ K6 G" A' j5 ~; \* {( e" B8 ~5 T
(2) 如果標題進行了修改,那麼每頁所對應該的摘要必須也要進行修改,否則會被搜索引擎認為描述是相同9 A- J7 x6 j9 K3 Q4 A" p
& d+ ?. b; r6 z+ u& g$ E3 I
引發被懷疑堆疊關鍵字的警告。
" E* Y# ^& S) C* P# V; `5 C; b& j& c
+ |& u: u* ?9 s L# g打開 arc.archives.class.php 找到 function ParseDMFields($pageNo,$ismake=1)
; Z% l. F9 j/ U: U
" @& C N1 s' ]把! v, v8 A' H0 E! g+ i+ |
1 B, B6 ^1 s" W: i5 t$ U
if($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField])) ) ~* r2 [: u) P$ j/ H0 q
{
7 e+ ?9 O _% a1 q2 X$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1];
3 I& S9 _' r8 j3 k( E+ h, I% U/ |8 {} 4 w+ I* q: H/ E
6 B" w" o( K* t/ m9 g
改為
* j# d/ Z, T4 l7 t+ @) V
$ `- [. K3 m0 z7 ^$ R( qif($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField]))
/ d& p' R- O# |! G) E% t6 R{
: D+ h! I( O$ h0 }8 ]2 c3 u3 D8 x$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; ( e, b; E; L0 s3 C3 ]
$this->Fields['description'] = trim(ereg_replace(」[\r\n\t]「, 『 『, cn_substr(html2text($this->Fields[$this) h( W; z# }- D6 b
" h2 F. P0 C0 l4 P$ d->SplitPageField]), 200))); 6 e4 R. }: Z6 V6 s( i5 w
}: L+ d: t, Z4 F2 k
7 ~# E8 e% h2 `- w: F這樣文檔每頁的摘要便有所區別。
& g9 G0 G! R3 ~& i1 e8 b( W$ o9 l1 z
四.創造符合GOOGLE麵包屑導航的目錄式SEO' B6 R. P4 k9 _/ {# s p, E9 }
0 x$ T. S1 Z: k' s4 v2 \/ jDedeCms V5.3中,為了兼容某些人配置的WEB服務器,對欄目鏈接強制指向了默認頁,即是顯示為 typedir/index.html ,對於某些用戶可能希望指定」typedir/」, 對於SEO而言,這確實有利於體現出網站的目錄結構,因此這樣想法是合理的,如果你的網站結構比較簡單(如不使用一些公司簡介之類的非默認頁鏈接),可以 按下面方式修改。- S* A# e8 `) h
/ e+ J3 A2 f/ f [; n$ G+ w& v打開文件 channelunit.func.php 找到 function GetTypeUrl5 e8 I8 L( J8 d% O$ R; u$ M+ Q) l
* F) u: @: I$ L$ `+ K& u4 q
($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl=」,$sitepath=」)% k: r0 A5 h3 _4 j7 N7 _8 x
~: I x1 ~5 y- A+ N把前面一段1 D; M) g! U% U/ ]5 m8 M- C
7 [% \" L$ T9 y1 A5 D
if($isdefault==-1)
) R6 }/ ?6 a" n$ C{ 8 u4 D$ ^# m( p" `/ Y6 I) ?
//動態 $ q8 g/ V0 l' r Q _+ D3 M/ I
$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid; ) I3 Z+ G7 X6 l# ^) h( h, R2 ?6 Z
} 2 ^2 S( T, A0 S% `3 M9 \
else if($ispart==2)
3 h. }% J- A4 v4 w{ ' X; F% G: K1 ^
//跳轉網址
4 Y) M' o; j' V' e! U8 @$reurl = $typedir;
$ u" x Z( Z# h& ^+ M9 o1 ~% [) _: breturn $reurl;
/ s! o1 Q. x+ |. b9 L o' O} ( m+ }1 n( \+ E- z
else
" Y. m, m0 N- L1 Z6 { o{
, i5 z2 H; S6 v2 U$ k8 G. P8 ~, \if($isdefault==0 && $ispart==0)
5 S+ z2 w! v1 Y6 n* ]( i" P{ % q' w2 \6 |% c2 F
$reurl = str_replace(」{page}」,」1〞,$namerule2); * F O8 Z9 U4 e& k) f
$reurl = str_replace(」{tid}」,$typeid,$reurl); 0 e" a) t l* G- G
$reurl = str_replace(」{typedir}」,$typedir,$reurl); ! e! ?8 O# `3 O. n6 ~2 J. E/ Q
} else { : G: E- B: k' S& P
$reurl = $typedir.』/』.$defaultname; ' ~! a- ^; B! S# |7 H6 P$ m" A. s
}
0 m9 X+ U( T4 x}
# a7 C8 H' s+ \$ I! Y6 N" M' s' q
6 {- Y" S3 P: z9 L! V) `% q& t- P改為:
5 C! l+ |6 }" m; w( J" S; H! [, y; L @! L, i- M% W% T+ ]3 x
if($isdefault==-1) - P' N4 W0 B1 B8 d' B
{ 8 ~3 f q; e, N! C9 v5 C
//動態
" T. F; g O3 X7 P0 W, w2 U$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid;
( V% q1 L$ q, H/ m8 \& f9 P}
) `# m! R$ ~2 @( `% j! q" ]) |else if($ispart==2)
; s1 F( s A5 T4 e( g{ & t9 U+ A9 t, R" [( m2 u
//跳轉網址
+ j( z8 u* F X5 ~: i$ i! w$reurl = $typedir;
+ K) Z: A! D: R8 j% o# n) A: d, U9 Rreturn $reurl; L4 O7 C( P' Q B! c$ F) L
} R+ g1 @# ?& [/ a! X1 A
else , H- }9 U/ f5 O- o. b# Y
{
: s5 D Q4 E- X2 `/ e( B/ eif($isdefault==0 && $ispart==0) - v, e* K6 ]$ Z3 ~1 }. J& |; Y2 H
{ ' m O7 S4 l' X [- R
$reurl = str_replace(」{page}」,」1〞,$namerule2);
, P! C& z |* q8 m7 q9 r& S' w- j$reurl = str_replace(」{tid}」,$typeid,$reurl); 6 u/ G( K4 y/ G# g7 a u5 X
$reurl = str_replace(」{typedir}」,$typedir,$reurl);
0 V) s9 r7 j- C) N: N} else {
) E3 n8 N& G9 d4 Bif(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';
( n% o6 Z: [: c9 g! n# kelse $reurl = $typedir.』/』.$defaultname;
# G& P! W! a) ~. C) n& e8 X} " p Q/ d' c: _/ G
}
, N5 D4 `7 g* M ]9 {3 u2 m+ \3 y& I4 K7 l+ ? B8 B" l
- Z. Z, L6 m2 F' j4 E1 m1 I
關鍵在於:「if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';」這一句不過大家一定需注意一個問題,目錄必須用 typedir/ 的形式,否則在IIS如果用 typedir不帶」/」的形式,IIS會通過303永久重定向到 typedir/ ,讓搜索引擎又多費了一重功夫,這顯然不搜索引擎喜歡的,也不是我們想看到的。) R* ?: n$ b6 Z2 P( J9 F
& E# R: Y6 G* p) h' v
5、重複文檔標題* Q b {/ f$ d: m, p5 `
8 B6 Q2 B a4 t. e" N不管任何情況,盡量減少你網站出現的重複文檔,DedeCms本身也提供了重複標題檢測處理的功能,在網站被搜索引擎大量收錄前,必須排除網站上重複的文檔,如果重複量過大,甚至會被認為你的網站是emu的。% k+ ~; _; C$ P% o7 T4 ^( x' m
/ s9 |7 ^/ J5 Q綜上總總,DedeCms 自身為SEO提供了各類的工具,不愧是SEO優化做得最好的CMS,在默認模板上也有體現,但由於兼容性原因,官方也沒開放所有符合SEO的方案,如果你做的網站進行上面所說的修改後,並不會影響到運行,這樣將會更完美。 |
|