DedeCms 是公認的在SEO優化方面做得做好的CMS,可能很多人會說,優化是靠個人的,與CMS無關,這其實也不盡正確,因為必須程序提供商提供足夠的工具才有可能,舉例說:如果某CMS的欄目設置連關鍵字、摘要都沒有,何來優化之說?本文以DedeCMS為例,深入說明SEO優化方面的攻略,本文所說的優化絕對不是那種含emu的SEO策略,而是針對網站自身的內容,提高搜索引擎對內容的識別能力。
. G; k8 r! o5 ^9 n A; K D/ n+ E) M# w8 Y7 }4 B1 Y3 e% g) c
一.DEDE全局優化
, Q9 j/ ^0 i, S
8 a+ q/ d3 h1 v在DedeCms的系統參數配置中,包含了「網站版權、編譯JS等底部調用信息;站點默認關鍵字;站點描述」這些項目,其實必須注意的是站點默認關鍵字、站點描述的設置必須合理。
' D( p5 F& e) L6 r$ x% M. [3 c1 z+ W; m$ e
(1) 站點名稱和關鍵字是搜索引擎識別你這個網站內容的關鍵,其中在主頁的網站名稱可以手工填寫,在標題的地方適當增加一些關鍵字。: Q. ]; l4 J5 W ]$ e
6 a# w% l5 `) f9 }7 ~( C; h1 P
(2) 網站摘要(站點描述)必須要合理,最理想的寫法應該是「某某網站是關於某某方面的內容的網站」這裡千萬別堆砌關鍵字,否則可能會被搜索引擎視為emu或放棄使用你指定的這些描述作為站點描述。
3 M- u$ u9 u* r
2 ~. p: c' N3 P/ u& X! X* q' t. ](3) 對於新站而言,為了提高網站名的權重,還可以在底部放一些「某某網站的內容來自何處或版權所有之類」這裡也不能堆砌關鍵字或僅突出某一兩個關鍵字,僅是為了提高網站名的權重。
' Y& l6 t; s" M5 {! _
: i' ~" T0 P0 C二。欄目標題與關鍵字、摘要的合理SEO* P* Z- f2 ?* b( o f2 O, n* n
; j6 @2 Q5 V: P& c/ N
對於有耐心的用戶,在新建欄目時最好把欄目的關鍵字填寫完整,如果沒有耐心的,不妨用下面的方法。; r$ B/ Q' f1 W- t, l2 ]* O7 Y/ M( ]
; t* {- `2 }, y* O" W$ h
在建好所有欄目後,到系統-》SQL命令行工具的地方運行下面的SQL:
% M$ u: g2 l+ R, G! w. b, t L0 v- G1 u6 v, L" f5 i# Z( O5 V) [
Update `dede_arctype` set
1 S }) \0 x) \4 zkeywords=Conact(typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』), 6 l* M% M' U1 e8 _/ v$ A" ]
description=Conact(』本欄目主要是關於』, typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』, 『方面的內容』);
! P2 d( |! i& }' C- W
. d7 [8 T6 |' r! I ] ~7 a* E三.核心文章內容的SEO4 l8 l c% Z/ _0 E( [. T% m
7 o8 D$ c$ x, v. X' KDedeCms 提供了自動關鍵字提取、自動摘要等各類工具來進行文檔的優化,不過有部份用戶往往習慣對本站所的文章都用同樣的關鍵字、同樣的摘要,這種方法是極不可取的,如果在沒法獲得關鍵字和摘要的情況下,寧可放棄這些描述,讓搜索引擎自動生成。
- i, `& W4 `1 U1 H2 v* }! U ~
% W. H3 |/ o) a/ P: B, g1 R使用DedeCms時,需要進行如下更改:
3 L9 d+ L$ J: {5 [3 n0 j! n) s4 \" ^) ~" ^4 l
(1) 對於多頁的文章 DedeCms 的標題默認沒有1、2、3之類的標識,這裡可以打開 arc.archives.class.php) v1 v" N, v' U C: }
* R1 C* y" f; Z在大約是 350 行左右的地方找到「//循環生成HTML文件」,然後把for循環起始的地方改為
, ?5 l+ f1 n# J X9 x0 a( o7 Z) V' _* b" @. A
for($i=1;$i<=$this->TotalPage;$i++)
! r8 h* U v U V/ J{ . i1 d7 U. V2 O# `1 E
if($this->TotalPage > 1) { 6 e/ V, N; q* F- ~6 N+ ^
$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields
$ A. r$ |* p, y. `7 G4 N2 T6 c1 u% n: l$ E2 }- i# _7 ~" z# S- |
['tmptitle']); & d/ n i8 k7 }2 z' h5 p0 J3 Q
$this->Fields['title'] = $this->Fields['tmptitle'].」($i)」;
% K' }, e4 t% q, T1 J}
2 m/ Q7 C5 P! x" W
( _0 Z. G. f3 v4 {% l1 k. l
$ N2 w$ z! \, A8 q這樣就能使多頁文章的標題帶有(1)、(2)、(3)… 的標識了。" |6 @/ j% \5 I4 \2 j [( R3 d8 m* j% Y5 X
6 D- f y. X' ?: s6 h/ N! }
(2) 如果標題進行了修改,那麼每頁所對應該的摘要必須也要進行修改,否則會被搜索引擎認為描述是相同
& j$ C" m. j7 \6 X' Y, z$ }# {, s; o1 l" P6 B# |' e" h: o
引發被懷疑堆疊關鍵字的警告。
/ P* J* L" E- S% _6 s
; P( [) q0 w$ [' t, G/ z1 O打開 arc.archives.class.php 找到 function ParseDMFields($pageNo,$ismake=1)/ i9 |) \! \% h: `0 J
0 }, `% Z, I- U3 D
把( O; P0 M" p9 P. _
- _! ]# w" b h1 A1 t" T$ uif($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField])) , R: K5 j( E3 _; z: i
{
( e/ t% c, N6 ^; _7 @1 N, d$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; ( Z6 U8 g2 J* e4 x: H- K' E
} , T! d6 f: `' e- k. N
! S3 r/ y! E" n7 ]* @, k改為
: c% A7 a8 ?6 p- W) z K* G/ E: S; t9 c, R% L! X
if($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField])) 1 \; m1 m1 M5 {5 O" R
{ 3 j4 V0 m; ?2 p3 c+ F) a9 j9 R
$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; 9 E8 O5 l* y5 ]0 f4 u
$this->Fields['description'] = trim(ereg_replace(」[\r\n\t]「, 『 『, cn_substr(html2text($this->Fields[$this+ ~0 G# K: n% }0 y
: F8 a$ d' S+ P, I& Z. k
->SplitPageField]), 200))); * S/ ^9 T* V* O4 o7 J7 O5 j+ n
}3 i+ t2 L3 U4 o4 u8 t2 I" R
7 `+ c$ f% E8 y: D, C+ K
這樣文檔每頁的摘要便有所區別。
# C$ {+ f4 i) o: @3 S- u' u1 V4 n
( X9 d y; i# m四.創造符合GOOGLE麵包屑導航的目錄式SEO' z" e! H& U/ z2 b2 [
+ C+ v4 N4 f% y/ r- Q- \$ M
DedeCms V5.3中,為了兼容某些人配置的WEB服務器,對欄目鏈接強制指向了默認頁,即是顯示為 typedir/index.html ,對於某些用戶可能希望指定」typedir/」, 對於SEO而言,這確實有利於體現出網站的目錄結構,因此這樣想法是合理的,如果你的網站結構比較簡單(如不使用一些公司簡介之類的非默認頁鏈接),可以 按下面方式修改。
9 P @6 g) _( ]% d9 x& x% S2 s1 n P2 N* b
打開文件 channelunit.func.php 找到 function GetTypeUrl
: ^' u0 V9 Y7 V# p; q) q% L/ y' F% q2 o4 G' v# _( S8 R3 p" \
($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl=」,$sitepath=」)
" |# J/ ^* a# g6 I* g1 t3 i( c# L. X9 F C2 C1 X5 u$ ]
把前面一段; s3 D+ s2 I0 q$ H
0 W* \* } K: V z: H( y
if($isdefault==-1) + {- w' a2 P* v3 q& x4 n$ h
{
- M( y3 t3 w* ?& M//動態
1 x. x k& T! M A+ J$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid; 4 s% l1 L/ d: ]8 ~8 K( k9 X: v
}
& e1 g. n I0 A0 Oelse if($ispart==2)
: G. P% Q0 ?- y+ Y{ 1 S1 }# U: z# d* v
//跳轉網址 8 s% e( U; q+ i) r
$reurl = $typedir; 9 l' o- c/ ^+ O
return $reurl;
; g: b$ s- K, Y8 L% {} 6 ?# H( d T0 k$ `
else
5 t. i" K: Z6 K{ ~# z4 E) {# D8 Z
if($isdefault==0 && $ispart==0)
' W. T% {) C! ~# W% E% {' N+ j) s{
K1 U# t- [9 [7 `4 P2 a0 u0 s! N$reurl = str_replace(」{page}」,」1〞,$namerule2); ! _. S0 g% W" ]2 P6 i& s" i& s" z
$reurl = str_replace(」{tid}」,$typeid,$reurl); 7 b: i& P; c. Y' J3 d
$reurl = str_replace(」{typedir}」,$typedir,$reurl);
& b& ^- S$ s5 S! C4 R9 p2 U} else { & p8 k2 _& W( s$ n
$reurl = $typedir.』/』.$defaultname; 7 J9 S1 W) j+ Z# C5 M, ?. i
} ( w; i1 ?- c/ w' x8 [. ]
}
* B4 |* S0 d. ~8 G
( u2 C' ~. N5 @# c改為:+ h/ J d. z/ k; U4 f: O7 X
6 Y; _: L! @ Z M% \- B
if($isdefault==-1) + y- C) [6 ]2 o* d `: w" t8 J
{ ; k% d5 N/ h4 C; ~' r. l
//動態
+ R v+ ?& x% D$ @$ g, _! E7 U/ g$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid; ! H2 o( @1 O: w' C, {7 N, \; m
} o0 |$ _' c8 K6 i
else if($ispart==2) 9 Q: R% l& o3 J, v6 N" G% a0 h
{ : ?7 r* k7 b; _6 s' f% f! \
//跳轉網址
* W, R+ H) e, K8 X) L) z2 D$reurl = $typedir;
, E3 Q+ N: s8 b5 ^) h; V" Hreturn $reurl;
8 V2 h' ? X. q; ?}
t( `4 S o4 [+ d1 gelse
5 k* v7 j \, T V( ~: V3 l- \" o{
+ n3 `6 w% O) y: R) B3 o/ Y, Jif($isdefault==0 && $ispart==0)
# N+ w: |, F" P" S# {{ & a, L! h \, t: H: N
$reurl = str_replace(」{page}」,」1〞,$namerule2); 5 ~8 S; b# C! _# X+ `
$reurl = str_replace(」{tid}」,$typeid,$reurl); L: @8 v1 i) Q, @- \ e
$reurl = str_replace(」{typedir}」,$typedir,$reurl); ' d. E6 r3 R2 i+ Z1 h* W- x" |
} else {
( u2 }% q8 n9 O" Gif(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';
0 |, |$ c7 H( z6 y) H! }else $reurl = $typedir.』/』.$defaultname; + |; Y* s+ x# A
}
9 S6 @' P6 b5 `) a( `( \" ?+ ^3 s}
( Y3 H( w1 `; |0 ?3 r" ?
/ b4 A$ ?* E& y3 M' B3 z8 ~6 A5 [4 N) U% }" e8 B$ n0 s
關鍵在於:「if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';」這一句不過大家一定需注意一個問題,目錄必須用 typedir/ 的形式,否則在IIS如果用 typedir不帶」/」的形式,IIS會通過303永久重定向到 typedir/ ,讓搜索引擎又多費了一重功夫,這顯然不搜索引擎喜歡的,也不是我們想看到的。
9 L0 h0 g3 e! Y7 m
/ A3 Z% R4 ]* h9 R5、重複文檔標題) a; A! b: i m* [2 v
6 ]/ T Y+ ?. r; ~& A E/ g) }
不管任何情況,盡量減少你網站出現的重複文檔,DedeCms本身也提供了重複標題檢測處理的功能,在網站被搜索引擎大量收錄前,必須排除網站上重複的文檔,如果重複量過大,甚至會被認為你的網站是emu的。+ j4 F, o1 u( c, ~4 J
, w9 k. J8 A& ]" q) e! b; [綜上總總,DedeCms 自身為SEO提供了各類的工具,不愧是SEO優化做得最好的CMS,在默認模板上也有體現,但由於兼容性原因,官方也沒開放所有符合SEO的方案,如果你做的網站進行上面所說的修改後,並不會影響到運行,這樣將會更完美。 |
|