DedeCms 是公認的在SEO優化方面做得做好的CMS,可能很多人會說,優化是靠個人的,與CMS無關,這其實也不盡正確,因為必須程序提供商提供足夠的工具才有可能,舉例說:如果某CMS的欄目設置連關鍵字、摘要都沒有,何來優化之說?本文以DedeCMS為例,深入說明SEO優化方面的攻略,本文所說的優化絕對不是那種含emu的SEO策略,而是針對網站自身的內容,提高搜索引擎對內容的識別能力。& |0 K8 ?0 c: M, |
X- w. x! W0 F1 A9 G, ^& ~
一.DEDE全局優化2 p3 z8 \ J4 v3 \; r
1 I( d- G" y& l! v& O& X6 U
在DedeCms的系統參數配置中,包含了「網站版權、編譯JS等底部調用信息;站點默認關鍵字;站點描述」這些項目,其實必須注意的是站點默認關鍵字、站點描述的設置必須合理。 t1 y P- J i
# ^) L* ?/ B6 s(1) 站點名稱和關鍵字是搜索引擎識別你這個網站內容的關鍵,其中在主頁的網站名稱可以手工填寫,在標題的地方適當增加一些關鍵字。
3 O" I, l( j% ~- N
' O5 v x5 A8 b$ @$ A" I- o* c(2) 網站摘要(站點描述)必須要合理,最理想的寫法應該是「某某網站是關於某某方面的內容的網站」這裡千萬別堆砌關鍵字,否則可能會被搜索引擎視為emu或放棄使用你指定的這些描述作為站點描述。
w3 c2 G; m: f
4 I( |5 {: N i+ d5 z9 O(3) 對於新站而言,為了提高網站名的權重,還可以在底部放一些「某某網站的內容來自何處或版權所有之類」這裡也不能堆砌關鍵字或僅突出某一兩個關鍵字,僅是為了提高網站名的權重。; f4 ?4 c5 P$ a% P/ E. K
- b1 I4 r/ {+ q二。欄目標題與關鍵字、摘要的合理SEO
$ d; m9 g1 S& R$ x2 O
! | o* i4 [0 V v對於有耐心的用戶,在新建欄目時最好把欄目的關鍵字填寫完整,如果沒有耐心的,不妨用下面的方法。, {" a# X, u% H Z" }, Q6 c
5 O m0 g" \3 e6 Y, o
在建好所有欄目後,到系統-》SQL命令行工具的地方運行下面的SQL:" _# m d m# Z
m8 u2 j) f) o# f P! X* x
Update `dede_arctype` set . W& P7 |# U6 ^) b+ i& d
keywords=Conact(typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』),
2 T9 ]: p/ C- Fdescription=Conact(』本欄目主要是關於』, typename, 『,』, typename, 『,』, 『和內容相關的關鍵字,如:教程、新聞、資源等』, 『方面的內容』);
0 l9 e4 E0 i/ I" M a
" |2 r3 x2 _' n# H# D三.核心文章內容的SEO
4 r* C" h/ n) \* d. L
& r4 G" A J/ ^' Z3 @) L- bDedeCms 提供了自動關鍵字提取、自動摘要等各類工具來進行文檔的優化,不過有部份用戶往往習慣對本站所的文章都用同樣的關鍵字、同樣的摘要,這種方法是極不可取的,如果在沒法獲得關鍵字和摘要的情況下,寧可放棄這些描述,讓搜索引擎自動生成。, C5 `: G* N( @% S( y& t/ y
* G! j8 _! s( J! _ O6 G使用DedeCms時,需要進行如下更改:4 `: I6 c" a) V" Q' m% o7 { q
$ Z- k5 p8 R( V0 k$ L(1) 對於多頁的文章 DedeCms 的標題默認沒有1、2、3之類的標識,這裡可以打開 arc.archives.class.php
" w# f# ~. Q" u: L2 T# S6 |3 G3 B$ _; G" S8 c6 v0 }) F
在大約是 350 行左右的地方找到「//循環生成HTML文件」,然後把for循環起始的地方改為 }+ t/ m- W/ {8 H9 G( U
7 z3 c" O! T$ G; `4 jfor($i=1;$i<=$this->TotalPage;$i++) - S: ^) a! d4 e, D0 x8 F/ v
{
9 R8 q: X) t) D7 o: y" tif($this->TotalPage > 1) {
! r. X! @- F4 v" z7 n8 J* z$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields
# w+ i, W1 z6 I! _7 y h+ Q: n' p2 J& p7 F" D
['tmptitle']);
~& c" @/ Q2 g, P. c/ |$this->Fields['title'] = $this->Fields['tmptitle'].」($i)」; & g r7 b l+ B' i& ?. m; B
}
) E/ y/ O9 i6 m8 s" O1 n" i3 E( k/ c! ]( o8 }% y6 a. ?
, y4 g; K/ u/ p/ f: A) _% [這樣就能使多頁文章的標題帶有(1)、(2)、(3)… 的標識了。. h" _3 J7 m+ L9 B2 d& p V
9 R; G& y5 \4 U# }0 ?( \/ q
(2) 如果標題進行了修改,那麼每頁所對應該的摘要必須也要進行修改,否則會被搜索引擎認為描述是相同7 q U5 H+ e- {' t0 x
$ C" K- D: ?& i. J
引發被懷疑堆疊關鍵字的警告。
# N7 ~: B, \' u3 J
) N8 `- Y, @( |7 `9 \0 y' }$ c. l1 A打開 arc.archives.class.php 找到 function ParseDMFields($pageNo,$ismake=1)5 T8 r, A8 B' R' d1 }: p0 z1 p4 f
: m' q6 F. T2 `& D: F0 R把
( `! Q4 Y9 U" S
, Z$ b# r3 B+ s, u/ l8 c; E% [if($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField]))
' L8 W6 o# W4 y6 O{
2 x7 _8 [3 P$ u6 q1 G$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1];
) j# ~2 j( Z: N- K: Q; g0 {+ V8 ?: ]} 4 u& k- R' J' ]5 l
9 Z, o( x! ]) {( G, u
改為
; ~& I4 W$ u% o' E+ v) {) y P4 H4 y9 G0 w" h" J
if($this->SplitPageField!=」 && isset($this->Fields[$this->SplitPageField]))
: q F/ Q6 l. P k! T( _{
) E; z' I# Z: I7 v; @3 N: j$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1];
. o! f& o. K& Q/ v7 E1 M) {$this->Fields['description'] = trim(ereg_replace(」[\r\n\t]「, 『 『, cn_substr(html2text($this->Fields[$this
5 B( X# E. h( P% H5 p7 ^% ^
% U* H5 ~+ x3 r0 {->SplitPageField]), 200)));
( Z, g3 B- y+ c% g* a}3 N/ q' X- @" `, V0 q5 d
9 q5 P5 Z+ q8 R3 o; o
這樣文檔每頁的摘要便有所區別。! D9 i5 J Q5 l5 n& N
; V. ?0 D+ D: x' L9 y四.創造符合GOOGLE麵包屑導航的目錄式SEO( c! K [0 c+ X4 C% X7 m
: u# p8 X$ D( y# k
DedeCms V5.3中,為了兼容某些人配置的WEB服務器,對欄目鏈接強制指向了默認頁,即是顯示為 typedir/index.html ,對於某些用戶可能希望指定」typedir/」, 對於SEO而言,這確實有利於體現出網站的目錄結構,因此這樣想法是合理的,如果你的網站結構比較簡單(如不使用一些公司簡介之類的非默認頁鏈接),可以 按下面方式修改。9 ^) u L. C6 u6 i6 K
- a' A+ M+ M. g/ I' B7 f3 k. N打開文件 channelunit.func.php 找到 function GetTypeUrl
! a; ~8 v* v1 }' E$ a$ `) x( @: t0 ?( o: ~. Y9 O
($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl=」,$sitepath=」)
" M$ {* y! u$ d3 y! c# ^! l! e$ d4 M a; f- Q& ?# @
把前面一段
& b m$ c& i3 Y. o2 A% k
w: D; B0 M1 z, rif($isdefault==-1)
: t9 a1 h5 B3 Z. {0 j{ 2 [% v' m. ^7 h
//動態
1 I1 d* |. J9 k" D$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid; 5 Y! g5 I9 ]7 @' Q
} ! ?8 `. u: E4 T/ k* ^: g
else if($ispart==2)
$ F) { Z: T& _ e! X, D{
# N2 _, h: K4 F$ @6 Q//跳轉網址 & u6 L1 C# F, b' w
$reurl = $typedir;
. h$ y2 f) o4 P: u. Ireturn $reurl; , K0 N* Y7 A9 L4 K+ ]5 h
}
( p2 H: ^7 v: ?0 Z5 Welse # L. q" {) E. {$ Q% ?
{
' ~% I4 h( ~& d o% l( k' Oif($isdefault==0 && $ispart==0) 3 x. ?+ l6 i' ~
{
6 k& @% [* V1 k. H& l3 Z$reurl = str_replace(」{page}」,」1〞,$namerule2);
+ T0 x" r4 M4 `8 o" [5 @$reurl = str_replace(」{tid}」,$typeid,$reurl);
1 J' e5 _+ k/ Z, M Z0 L$reurl = str_replace(」{typedir}」,$typedir,$reurl); 2 {" k& \; v4 F- M0 y
} else { - f0 a: ~( b7 X6 v; q4 v+ D
$reurl = $typedir.』/』.$defaultname; : T; q$ I1 T" w R4 p) s
} ( k6 _0 G$ Y. R4 ?1 u" |( M
} ! |# W) ]0 X; s6 f! C; i: W
% D( c2 l! P5 F改為:, T$ J- |0 p9 _4 P; N! p
& \" L# T1 t+ ?; y4 C. R5 p1 u
if($isdefault==-1) ! W4 c' v6 Y. d8 L8 B" \# m
{
$ K l. ^0 b4 P! }' [//動態 ; V4 z, Y% i+ `0 F
$reurl = $GLOBALS['cfg_phpurl'].」/list.php?tid=」.$typeid;
7 K3 l, ~. Q4 J" e: B} 5 X9 @& O. a' b ?. Q5 U% z" P& f
else if($ispart==2)
; _( A3 _- _# H# i% m: q" }{
! x! r2 u* Y% {/ v//跳轉網址 ; Q* W6 e6 l& a
$reurl = $typedir; ' v, c5 o j4 }* H& l
return $reurl;
5 C; H$ O0 W# o}
, F' b5 p$ \" j4 h% H0 \else
# u3 Z% ^8 `" e- c* e- a& H4 K$ U( |+ t{
" ^' c/ P8 y1 nif($isdefault==0 && $ispart==0)
% e/ ~9 i# w) Z. O5 X8 C# _! e{
- R: B1 l; A$ U8 V6 I, ~$reurl = str_replace(」{page}」,」1〞,$namerule2);
' S/ q0 }/ O% V h) |( p$reurl = str_replace(」{tid}」,$typeid,$reurl); , O: m q7 B$ i* w) x5 K
$reurl = str_replace(」{typedir}」,$typedir,$reurl); " C8 q! N, u |1 L( L! m& o
} else { % Q( H. J* a6 D; s/ T7 K
if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/'; # O9 A/ c6 Q* k5 h
else $reurl = $typedir.』/』.$defaultname;
( d- e: X: B/ J- t}
3 }& A ^1 w- c5 H2 C9 F( Q# B* g} # m) ~+ @1 T* v1 t& g
) |, R2 U, @- Y! s5 d1 H+ B$ R
$ g) V' n- m! F6 a# Q' D% ~
關鍵在於:「if(!isset($cfg_need_dfname) || $cfg_need_dfname==』N') $reurl = $typedir.』/';」這一句不過大家一定需注意一個問題,目錄必須用 typedir/ 的形式,否則在IIS如果用 typedir不帶」/」的形式,IIS會通過303永久重定向到 typedir/ ,讓搜索引擎又多費了一重功夫,這顯然不搜索引擎喜歡的,也不是我們想看到的。) r$ r3 z! p" t
. S$ n) V: p8 s2 w6 F2 B
5、重複文檔標題
8 t4 n: m6 b# s, P; v2 F$ e0 ^; Q1 I& A! t
不管任何情況,盡量減少你網站出現的重複文檔,DedeCms本身也提供了重複標題檢測處理的功能,在網站被搜索引擎大量收錄前,必須排除網站上重複的文檔,如果重複量過大,甚至會被認為你的網站是emu的。
: `9 W! G& j# _* |6 E/ [
% T/ |: D' {4 @* L綜上總總,DedeCms 自身為SEO提供了各類的工具,不愧是SEO優化做得最好的CMS,在默認模板上也有體現,但由於兼容性原因,官方也沒開放所有符合SEO的方案,如果你做的網站進行上面所說的修改後,並不會影響到運行,這樣將會更完美。 |
|