discuz論壇基礎搜索優化實踐

discuz論壇基礎搜索優化實踐面前談談內部實質意義頁本身的優化(meta,content)問題,最終解決內部實質意義頁(viewthread)的網頁復制問題

內部實質意義頁偽靜態URL不惟一

看看內部實質意義頁的URL大家就曉得了:thread-(tid)-(page)-(forumdisplay page).html,可以看出最終一節表達的是此帖在列表頁的第幾頁。所以,當您的帖子越來越多,這個帖便會由第1頁到第二頁…,它的URL便會不斷的變動。實際上敞開一個列表頁就可以見得,第2頁的帖子鏈接的最終數碼都是2,第3頁的都是3,只是很少注意它。我是在SE的收錄中發覺復制網頁越來越多,纔對最終的數碼注意的。

解決辦法
改正 forumdisplay.php 文件:將 $extra = rawurlencode(“page=$page$forumdisplayadd”); 語句調換為
$extra = rawurlencode(“page=1$forumdisplayadd”);

語句中的page就是forumdisplay page,這麼改後無論帖子在列表頁的第幾頁,這個數都是1。

功能虧損:當用戶編輯帖子或斑竹管理帖子後,有個提醒跳轉頁:挑選轉進入行列表頁仍然正題頁,這時轉進入行列表頁的話,只能轉到列表頁第1頁,而無論您原來稽留在第幾頁。

redirect的301重定向

在discuz論壇中可以看見大致相似redirect.php?tid=xxxgoto=lastpost#lastpost這麼的鏈接,它的功能是成功實現『最新刊發、最終刊發、上一正題、下一正題『功能,僅這一個功能就可以給同一個內部實質意義頁導致四份復制網頁,因為這個將這麼的鏈接301長久重定向到帖子的靜態地址。

解決辦法
改正 redirect.php 文件:
將前兩個 require_once DISCUZ_ROOT.’./viewthread.php’; 語句調換為
$bmt_url=’Location:/thread-‘.$tid.’-‘.$page.’-1.html’;
header(‘HTTP/1.1 301 Moved Permanently’);
header( $bmt_url );
將後兩個 require_once DISCUZ_ROOT.’./viewthread.php’; 語句調換為
$bmt_url=’Location:/thread-‘.$tid.’-1-1.html’;
header(‘HTTP/1.1 301 Moved Permanently’);
header( $bmt_url );

dz5.5的援用法也有個跳轉,也可以做301:
將 dheader(“Location: viewthread.php?tid=$post[tid]page=$page#pid$pid”);調換為
$bmt_url=’Location:/thread-‘.$post[tid].’-‘.$page.’-1.html#pid’.$pid;
header(‘HTTP/1.1 301 Moved Permanently’);
header( $bmt_url );

***注意此處直接轉到達靜態地址,沒有做判斷是否開啟偽靜態功能,所以不開啟會有問題

功能虧損:轉向到靜態地址後,動態地址中大致相似#lastpost的錨點將沒有辦法起效用了,有可能要手動滾屏了
???好似沒有影響錨點

提醒信息頁的網頁復制

這個問題和內部實質意義頁也有著非常大的關系,呵呵。如管理員設置准許游人瀏覽列表,而嚴禁瀏覽內部實質意義時,這些個內部實質意義頁都將回返一沒有職權范圍的提醒信息頁,但他們的URL是不一樣的,這麼就形成了嚴重的網頁復制,這個之外還有其他形成的無權操作等。別一種提醒信息如帖子不存在等,數目大了也會形成網頁復制。這兩種提醒信息,都是經過showmessage函數作別調配使用nopermission.htm和showmessage.htm兩個模型板成功實現的。

解決辦法
1.開創另一個頭模型板文件 templates/default/header_disbots.htm
內部實質意義同 header.htm 文件,但將那裡面的meta標簽調換為
meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /
meta name=”robots” content=”noindex,nofollow” /

2.作別改正 templates/default/nopermission.htm 和 templates/default/showmessage.htm 文件
將他們第1行的 {template header} 調換為 {template header_disbots}

固然對meta robots標簽支持的不是很廣泛,但這是比較省事的辦法
由於是提醒信息頁,用301來成功實現的話,還要傳給轉到的頁好多信息,改正起來比較麻煩

參照例子:http://bbs.admin5.com title 站長網買賣商品論壇 網站買賣商品,域名買賣商品,域名賣出,網站賣出,源碼賣出,手續賣出 – 站長網買賣商品信息平臺/title

robots.txt運用

User-agent: *

#嚴禁一個版面的收錄
#假如有個水版,沒想到嚴禁游人職權范圍,也沒想到SE收錄,已免影響網站品質,可以用如下所述辦法
Disallow: /forum-1-

#數碼即為要嚴禁版塊的ID。
#注意數碼最終的 不要省略,否則連ID為11,12等1開頭的版都禁了

#再禁網頁復制
Disallow: /viewthread.php
#這個是內部實質意義頁的動態方式,面前對偽靜態做了優化並改正了眾多的復制網頁,因為這個這處動態方式如打印頁等必須要嚴禁

Disallow: /forumdisplay.php
#這個要謹慎認真:列表頁的動態方式,還涵蓋菁華、活動、投票等方式。我發覺5.0的靜態化不徹底,它的上一頁下一頁翻頁仍是動態,這麼假如嚴禁了,十頁在這以後的內部實質意義就不可以通這引得了。所以假如您站內的交差鏈接不浩博的話,不要在此嚴禁,免得影響收錄。

hekaiyu說沒有這個問題,去官方看了下5.5確實沒問題(或許我的5.0壓根兒沒問題,或許官方在新版本中完備了正則表現式的調換規則),這麼更好了,嚴禁它,又整潔了好多

#嚴禁其他無用內部實質意義
Disallow: /profile
#用戶信息,不知為何discuz也靜態化了,一例嚴禁
Disallow: /relatethread
Disallow: /post
Disallow: /blog
Disallow: /member
Disallow: /misc
Disallow: /faq
Disallow: /my
Disallow: /pm
Disallow: /digest
Disallow: /status
# … … 等等
# —– robots.txt end ——
[更新]dz5.5的robots.txt後局部給出的Disallow: post.php等是不符合規范的,必須要在面前加上”/”

首頁URL問題

後臺基本設置-首頁文件名假如不設置,會默許為index.php。所以站內到首頁的鏈接為方式為http://domain/index.php。而我們普通援用論壇首頁或交換鏈接的方式普通是http://domain/。實際是同樣的,但SE可覺得是兩個URL,並且一個領有眾多的內裡鏈接,一個領有較多的外部鏈接,所以哪一個被降級都不是好管閑事情,最好一統塊兒來。這處的改正目的是http://domain/的方式。

1.進入了後臺,基本設置-首面文件名 設置為: /
2.改正文件 member.php 將 header(“Location: {$boardurl}”.$indexname); 調換為
if( $indexname==’/’){
header(“Location: {$boardurl}”);
}else{
header(“Location: {$boardurl}”.$indexname);
}
此改正處的功能是掃除淨盡cookies後回返到首頁,如不改正域名後就有兩個/。短時間之內未發覺運用/當首頁文件名的其他問題

結 束

除開文件的改正,有點地方要合適後臺設置,面前都提到達,這處總結概括一下子。主要有:1.URL靜態化,只開始使用平常的頁面靜態化就可以了;2.不要開始使用Archiver功能;3.後臺的keywords和description設置只是針對首頁的(假如您沒做列表頁和內部實質意義頁的meta改正則也應用到他們);4.後臺首頁文件名為/(當然您也可以設置自個兒特別指定的)

Discuz的SEO至此就告一段落了。想想當時發覺和解決這些個問題還真花了不少力量呢,然而理解了discuz,理解了php,理解了seo,呵呵

熱烈歡迎各位提出意見和問題。