DedeCms 是公認的在SEO優化方面做得做好的CMS,可能很多人會說,優化是靠個人的,與CMS無關,這其實也不盡正確,因為必須程序提供商提供足夠的工具才有可能,舉例說:如果某CMS的欄目設置連關鍵字、摘要都沒有,何來優化之說?本文以DedeCMS為例,深入說明SEO優化方面的攻略,本文所說的優化絕對不是那種含emu的SEO策略,而是針對網站自身的內容,提高搜索引擎對內容的識別能力。
4 }. p: M* Y+ S4 Z6 B
1 R3 t% A1 j7 P4 z) U一.DEDE全局優化+ R1 L- x' L8 K* K2 C: ?2 ]
3 ~4 S) E0 C2 k! h
在DedeCms的系統參數配置中,包含了「網站版權、編譯JS等底部調用信息;站點默認關鍵字;站點描述」這些項目,其實必須注意的是站點默認關鍵字、站點描述的設置必須合理。
% ?9 Q9 i( i+ Z
7 k* G- m1 r& g( y* U(1) 站點名稱和關鍵字是搜索引擎識別你這個網站內容的關鍵,其中在主頁的網站名稱可以手工填寫,在標題的地方適當增加一些關鍵字。
3 C" ]" M/ C* I, d9 `$ v7 p9 [0 L4 C: N& i) O0 V( |! s9 C! [. H
(2) 網站摘要(站點描述)必須要合理,最理想的寫法應該是「某某網站是關於某某方面的內容的網站」這裡千萬別堆砌關鍵字,否則可能會被搜索引擎視為emu或放棄使用你指定的這些描述作為站點描述。" |* A) M: Y& j: q
3 j; ^. Z& m3 p. q# w(3) 對於新站而言,為了提高網站名的權重,還可以在底部放一些「某某網站的內容來自何處或版權所有之類」這裡也不能堆砌關鍵字或僅突出某一兩個關鍵字,僅是為了提高網站名的權重。, ]2 a1 c1 K( {4 Q( v# n
2 l) G3 Q7 R* [
二。欄目標題與關鍵字、摘要的合理SEO
* c) [8 m4 {: d
/ ~% h8 v5 m, s7 G7 `對於有耐心的用戶,在新建欄目時最好把欄目的關鍵字填寫完整,如果沒有耐心的,不妨用下面的方法。
: W7 e# Q. C z$ }! x" a( p5 d. v6 I6 b! u3 R5 R: C$ [* ^- m0 e
在建好所有欄目後,到系統-》SQL命令行工具的地方運行下面的SQL:) [+ p& k# w; B# {& N
- c' m7 w$ N: y
Update `dede_arctype` set & k5 `1 K# ?, q- D# `
keywords=Conact(typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』), / K% P; }' q1 S8 u
description=Conact(』本欄目主要是關於』, typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』, 『方面的內容』);
# F9 B0 P) j1 f% ?& n7 c6 Y( e; b% M7 a) V2 N
三.核心文章內容的SEO+ K( Y* D+ ? D, d
. D2 A. g; \ _- }- j% j& v ~0 X# @: S
DedeCms 提供了自動關鍵字提取、自動摘要等各類工具來進行文檔的優化,不過有部份用戶往往習慣對本站所的文章都用同樣的關鍵字、同樣的摘要,這種方法是極不可取的,如果在沒法獲得關鍵字和摘要的情況下,寧可放棄這些描述,讓搜索引擎自動生成。9 F/ j& J b& M- d4 S0 M
( h2 f9 D$ A$ l* D+ q/ I+ e, M使用DedeCms時,需要進行如下更改:0 C# E) s2 I! r
: v* q2 Q) X( K0 u' \/ N(1) 對於多頁的文章 DedeCms 的標題默認沒有1、2、3之類的標識,這裡可以打開 arc.archives.class.php: p/ P9 a, R; P) O3 t
4 p2 J2 ^% I# [8 k) \
在大約是 350 行左右的地方找到「//循環生成HTML文件」,然後把for循環起始的地方改為6 w; J. \2 k0 t% ]
9 f4 z# A) _" ofor($i=1;$i<=$this->TotalPage;$i++) 4 }3 B) A+ d5 q' W& O
{
0 A B" V6 G( Q0 x7 X8 r2 Uif($this->TotalPage > 1) {
% l" r0 ]+ k7 ~+ ^) U; k$ Z$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields
; ]+ H+ d: F, E4 w8 S+ g7 _7 w7 [ K: u: W( s1 R1 L7 x
['tmptitle']);
6 E/ }+ n% P5 O. D# J$this->Fields['title'] = $this->Fields['tmptitle'].」($i)」;
6 R0 G- X# l' s0 T* N} , c+ K$ O3 l! t8 z' }
# Z* Y7 r6 ^0 Z: a+ A& r9 {
9 a2 a3 A2 j( v# x+ ^" d9 t2 ^
這樣就能使多頁文章的標題帶有(1)、(2)、(3)… 的標識了。1 [2 b: @6 x8 P9 W- I& ]/ m& Z
2 w6 g. m6 [# H, d& q& d2 c8 _
(2) 如果標題進行了修改,那麼每頁所對應該的摘要必須也要進行修改,否則會被搜索引擎認為描述是相同* r" ?2 w6 E6 M s# v* g
+ H& X, e1 T& a3 V5 a6 e) ^
引發被懷疑堆疊關鍵字的警告。3 F; X. M$ U, L2 B9 a
' L" S, E" o0 W# R4 C打開 arc.archives.class.php 找到 function ParseDMFields($pageNo,$ismake=1)
$ v6 ?# f6 D3 G, u( i# c
6 I7 d$ @/ R, j/ U把$ @" V& j+ @9 {
7 J; k2 r5 R( T, nif($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField])) : ]; o* B) l1 }0 W j
{
( n! ?9 H- Y0 R9 u% e9 m$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; 1 i& ]2 Q( l0 B
} " k3 ~0 W3 W# T% V6 e
* u! D# m" }: z! z; Z/ ~( G
改為6 ~" ~. V% [8 Q8 y
1 l$ G; d3 E+ d
if($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField]))
7 d7 _5 ?. ]; O6 k; O- D5 R{ 6 ?5 m8 ~5 o( J* j
$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1];
* f) \. @$ c h; w$this->Fields['description'] = trim(ereg_replace(」[\r\n\t]「, 『 『, cn_substr(html2text($this->Fields[$this
9 R4 P) y9 k @+ K3 A* a3 C4 i3 P" Z0 U5 ]5 L6 z4 ?
->SplitPageField]), 200))); 6 H* J- m' f( ?$ G) a/ L R
}7 y {( t4 d/ p. _. o3 J/ G
# A1 f- ^2 Q' e y) l
這樣文檔每頁的摘要便有所區別。
* e- e! d2 F+ A7 e! n+ u
0 [* p/ H9 q( \, s四.創造符合GOOGLE麵包屑導航的目錄式SEO$ t' `- \2 w+ ?% Z" S6 t" I
- m. P9 p C, c4 v% K2 ^DedeCms V5.3中,為了兼容某些人配置的WEB服務器,對欄目鏈接強制指向了默認頁,即是顯示為 typedir/index.html ,對於某些用戶可能希望指定」typedir/」, 對於SEO而言,這確實有利於體現出網站的目錄結構,因此這樣想法是合理的,如果你的網站結構比較簡單(如不使用一些公司簡介之類的非默認頁鏈接),可以 按下面方式修改。0 |0 w6 o5 [5 D# Y* @' N' Q
$ }" @+ R1 e* H. e( E1 f h
打開文件 channelunit.func.php 找到 function GetTypeUrl! R* ? G. d# E5 r0 F0 \' {9 C
0 n* C6 d, ?0 p) \/ K" M: j
($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl=」,$sitepath=」)! K0 O" z8 V* n( t9 x: c+ @7 ?: F3 s
5 O1 G" W' i$ i/ m3 S3 S$ ~- v把前面一段
0 d$ e: V+ p1 E1 ~$ U$ l% R c+ C% a* \9 e" C( A L, ^
if($isdefault==-1)
" \2 `+ ~- x5 q0 u; P{
! |+ V' ^2 A% g8 V, `' X* {3 c//動態
+ y: p+ _" X+ P) }7 S$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid;
" L, B; i: y* s7 w2 d}
2 ~0 t7 e# B: `1 u3 telse if($ispart==2)
. N; q3 s' l% Z6 X8 l{ 3 X, L2 x% h: B8 A8 W6 c7 Y
//跳轉網址
3 p$ g- h5 e6 x$reurl = $typedir; " i9 K7 l9 o% F* S* o0 t
return $reurl; 4 g* Q" n# D7 N/ `' L+ [2 ^3 V, v
}
, u/ ?3 t/ @% h+ ~: `else ' f9 }/ R+ o: u0 m
{ 7 B6 ?5 V; H4 z0 ~
if($isdefault==0 && $ispart==0)
, w! S, [7 T9 M& i- L; P& X# O{ * {% m# x0 M8 w
$reurl = str_replace(」{page}」,」1〞,$namerule2); 0 G& `( M2 y) \3 O
$reurl = str_replace(」{tid}」,$typeid,$reurl);
0 d% v4 q1 O0 i8 K3 E$reurl = str_replace(」{typedir}」,$typedir,$reurl); + f7 g# H* h) r# ^
} else { : E' S& u1 t7 y7 U3 J
$reurl = $typedir.』/』.$defaultname;
0 o, V2 L$ l6 o( F: F2 ~}
! s8 d! c3 n% v& g; B: j2 B5 k}
7 \9 l7 ?" [3 }% o) V3 G
; a2 _; Q% O" i/ f5 h3 c改為:/ O; P, T6 r" S# B) Y7 B
1 i+ g; m( \8 X$ G. C3 L% z
if($isdefault==-1) ' ~1 r; d! Y5 @! C9 I+ m
{ 8 m0 c. U, I2 b/ Z. {: R2 c
//動態
- l* x$ u$ }5 y* K$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid;
G: Q. I. @6 k/ ]}
P! V! D0 T6 L P* W- K2 kelse if($ispart==2) 2 x- h* o* K2 Z" q: i8 P# z9 A; ?
{ ) u2 r; w& x. }! `+ G$ ?' M3 `
//跳轉網址 7 x- r6 Y" ^% D6 _% n
$reurl = $typedir;
! t4 M9 V2 c& c) A1 G: Lreturn $reurl;
) M. g- G7 ~( y} / D6 h) O/ r# D' s; ?
else
& J0 O( D. `0 g1 E) j5 O. ?) Z; u{ . k9 Y6 r+ {8 V1 N- d3 Q- o
if($isdefault==0 && $ispart==0) $ A9 L9 f8 M2 M6 Z
{
5 ~" D* D- r: k. r0 J, X$reurl = str_replace(」{page}」,」1〞,$namerule2); 0 l; \, V+ Y( L% _, H# f
$reurl = str_replace(」{tid}」,$typeid,$reurl);
, l7 B2 E" k" {* z( r. Y. @$reurl = str_replace(」{typedir}」,$typedir,$reurl); 2 M/ q9 m/ Q9 J6 x
} else { . t n4 g' f- C6 L' v( s
if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/'; 8 c9 G5 z$ J* { x7 g) T
else $reurl = $typedir.』/』.$defaultname; 3 ?1 u3 {% c2 ]0 J+ E% s" q1 {
} ' k+ y9 V3 H- O
}
( o( n& d L8 u" w; E' A& {" I/ k
[! ^ Y: q" L. r
關鍵在於:「if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';」這一句不過大家一定需注意一個問題,目錄必須用 typedir/ 的形式,否則在IIS如果用 typedir不帶」/」的形式,IIS會通過303永久重定向到 typedir/ ,讓搜索引擎又多費了一重功夫,這顯然不搜索引擎喜歡的,也不是我們想看到的。$ G5 T" r& q5 M7 I( v
4 o8 N j2 @8 U6 c+ c) H2 V( T
5、重複文檔標題" Q, x: D+ B9 V8 y
1 r8 @7 N, \8 ^) J, P( D3 s不管任何情況,盡量減少你網站出現的重複文檔,DedeCms本身也提供了重複標題檢測處理的功能,在網站被搜索引擎大量收錄前,必須排除網站上重複的文檔,如果重複量過大,甚至會被認為你的網站是emu的。( W2 b: J. L; n6 m" w
* D/ _+ ^& e; H: S j綜上總總,DedeCms 自身為SEO提供了各類的工具,不愧是SEO優化做得最好的CMS,在默認模板上也有體現,但由於兼容性原因,官方也沒開放所有符合SEO的方案,如果你做的網站進行上面所說的修改後,並不會影響到運行,這樣將會更完美。 |
|