織夢DedeCms全站偽靜態,是為了更方便管理和SEO,織夢DedeCms預設是產生靜態html檔案的,對於最佳化已經非常友好,但還是有部分頁面是動態形式的(例如:Tag標籤頁面、網站內容搜尋頁面、DedeCms問答頁面等),為了是這些頁面更好的被搜尋引擎收錄,就需要進行偽靜態了,雖然織夢DedeCms系統可以產生靜態html文件,但如果每天更新內容量特別大的話,對於生成html文件也成為系統和人力的一個負擔,那麼也可以做成偽靜態形式,這樣就免去了不斷繁瑣的生成html文件了。
將DedeCms全站靜態化,這就需要mod_rewrite偽靜態模組的支援。只要站長對.htaccess正規表示式精通,就可以把dede整站靜態化,更符合搜尋引擎,而且還可以避免重複URL來。 DedeCms全站偽靜態配置有些麻煩,主要是需要我們手動修改原始碼。整理步驟如下:
1、先開啟網站偽靜態功能。登入dede管理員後台->系統->系統基本參數->核心設定->是否使用偽靜態 請選擇「是」。
2、修改來源程序,實作首頁偽靜態、頻道頁偽靜態、清單頁偽靜態、文章頁偽靜態,這是過程比較複雜,不如其它php開源程式操作簡單。
3、製作編寫.htaccess和.htaccess檔案規則,上傳到DedeCms的安裝目錄。
織夢DedeCms全站偽靜態教學:含列表|文章|問答|搜尋|TAG偽靜態規則:
1、網站伺服器和網站空間是否支持偽靜態:
這點特別重要,要嘛所以設定都不起作用。如果你的網站使用的是伺服器,那就可以自己設定一下,如果是空間的話,可以詢問下IDC服務商客服,看是否支援偽靜態(一般空間都是支援偽靜態的)。 Apache伺服器偽靜態相對簡單,直接在.htaccess檔案中加入對應偽靜態規則即可;而IIS伺服器偽靜態的實現,則需要載入Rewrite元件,然後設定httpd.ini檔案。
2、開啟DedeCMS偽靜態:
1)織夢DedeCms後台-系統參數-核心設定-是否使用偽靜態:選擇「是」;
2)如果你啟用了織夢DedeCms問答模組,則在後台-系統參數-模組設定-是否使用Rewrite:選擇「是」;
3)建立欄位或批次增加欄位時,欄位清單選項:選擇「使用動態頁」; 新增文章時,發佈選項:選擇「僅動態瀏覽」。同樣你也可以更改他們的模板,讓他們預設就是這兩個值,一勞永逸。修改方法很簡單,方法如下:
找到後台檔案:/dede/templets/catalog_add.htm 修改新增欄位時預設「使用動態頁」
<td height="26" style="padding-left:10px;">栏目列表选项:</td> <td><input type='radio' name='isdefault' value='1' class='np' checked="checked" />链接到默认页 <input type='radio' name='isdefault' value='0' class='np' />链接到列表第一页 <input type='radio' name='isdefault' value='-1' class='np' />使用动态页</td>
改為:
<td height="26" style="padding-left:10px;">栏目列表选项:</td> <td><input type='radio' name='isdefault' value='1' class='np' />链接到默认页 <input type='radio' name='isdefault' value='0' class='np' />链接到列表第一页 <input type='radio' name='isdefault' value='-1' checked="checked" class='np' />使用动态页</td>
找到背景檔案:/dede/templets/article_add.htm 修改新增文章時預設「僅動態瀏覽」
<td width="90">发布选项:</td> <td width="379"><input name="ishtml" type="radio" class="np" value="1" checked="1" />生成HTML <input type="radio" name="ishtml" class="np" value="0"/>仅动态浏览 </td>
改為:
<td width="90">发布选项:</td> <td width="379"><input name="ishtml" type="radio" class="np" value="1" />生成HTML <input type="radio" name="ishtml" class="np" value="0" checked="1"/>仅动态浏览 </td>
4)如果網站已經存在生成的靜態欄位或文章HTML,那麼只需在後台-系統-SQL命令列工具中執行如下語句:
update dede_arctype set isdefault=-1; update dede_archives set ismake=-1;
註:命令中dede是網站安裝時的資料表前綴,根據實際情況進行替換。
3、開啟DedeCms偽靜態支援並不能完全在背景配置,有很多地方還是需要手動修改的。以下說明DedeCms全站偽靜態的實作方法,適用於V5.3以上版本。這次的DedeCms偽靜態測試環境是Windows IIS6,對於Linux或其它伺服器的偽靜態實作原理都是一樣的,只要搞清楚思路就行。
1)DedeCms首頁偽靜態:
把網站根目錄下index.html刪除,以後不更新首頁HTML就可以了,當然也可以選擇不使用動態首頁。
2)DedeCms頻道|清單頁|文章頁偽靜態:
主要透過修改GetFileName()、GetTypeUrl()這兩個函數來實現。 DedeCms V5.3、DedeCms V5.5和DedeCms V5.6版本,開啟/include/channelunit.func.php進行修改。注意:DedeCms V5.7,此檔案路徑更改了,你打開/include/helpers/channelunit.helper.php即可。
A.將GetTypeUrl()中的如下程式碼:
//动态 $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid; 替换为 //动态 $reurl = "/category/list-".$typeid.".html";
B.將GetFileName()中的下列程式碼:
//动态文章 if($cfg_rewrite == 'Y') { return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html'; } 替换为 //动态文章 if($cfg_rewrite == 'Y') { return "/archives/view-".$aid.'-1.html'; }
3)DedeCms列表分頁偽靜態:
開啟/include/arc.listview.class.php,找到取得動態的分頁清單GetPageListDM()函數結尾處:
$plist = str_replace('.php?tid=', '-', $plist);
#取代為
$plist = str_replace('plus', 'category', $plist);//将默认的plus替换成category $plist = str_replace('.php?tid=', '-', $plist);
將清單分頁預設連結格式/plus/list-1-2-1.html修改為/category/list-1-2-1.html,這步驟也可以不作更改。
4)DedeCms文章分頁偽靜態:
開啟/include/arc.archives.class.php,找到取得動態的分頁清單GetPagebreakDM()函數結尾片:
$PageList = str_replace(".php?aid=","-",$PageList);
替換為
$plist = str_replace('plus', 'archives', $plist);//将默认的plus替换成archives $PageList = str_replace(".php?aid=","-",$PageList);
5)DedeCmsTAG標籤偽靜態:
DedeCms默认的TAG标签URL,形如/tags.php?/dedecms5.7/,特别的难看。打开/include/taglib/tag.lib.php,找到lib_tag()函数下的:
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
替换为
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword'])."/";
到这里,TAG标签URL中的“.php?”号就去掉了。
6)DedeCms搜索伪静态:
DedeCms搜索URL静态化比较麻烦,附带参数多不说,参数也可能变化,像搜索结果分页的URL就特麻烦,伪静态规则匹配复杂。将搜索URL中“search.php?…”直接替换为“search.html?…”,至于“?”号之后的参数以任意字符进行匹配。
依次打开include文件夹下的channelunit.func.php、arc.searchview.class.php、arc.taglist.class.php以及/include/taglib/hotwords.lib.php,查找“search.php?”替换为“search.html?”即可。
7)DedeCms问答伪静态:
问答模块的伪静态实现比较简单,只要后台开启伪静态支持即可,至于个别页面,如ask目录下的browser.php、question.php以及include目录下的common.inc.php、functions.inc.php都需要简单修改才可以匹配伪静态规则。注意一点,DedeCms V5.7问答模块整体升级了,之前的规则已经不适用了。
4、DedeCms伪静态规则:
依照上面的步骤修改完毕,接下来配置好httpd.ini文件和.htaccess文件伪静态规则,则DedeCms全站伪静态就完美实现。
1)IIS伪静态
打开httpd.ini文件,加入如下规则:
#首页伪静态规则,如果不使用动态首页,请勿必删除这一行,否则打开首页会出现死循环 RewriteRule ^(.*)/index\.html $1/index\.php [I] #列表页伪静态规则 RewriteRule ^(.*)/category/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2 [I] RewriteRule ^(.*)/category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4 [I] #文章页伪静态规则 RewriteRule ^(.*)/archives/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2&pageno=$3 [I] #搜索伪静态规则 RewriteRule ^(.*)/search\.html(?:(\?.*))* $1/search\.php?$2 [I] #TAG标签伪静态规则 RewriteRule ^(.*)/tags\.html $1/tags\.php [I] RewriteRule ^(.*)/tags/(.*)(?:(\?.*))* $1/tags\.php\?\/$2 [I] RewriteRule ^(.*)/tags/(.*)\/(?:(\?.*))* $1/tags\.php\?\/$2\/ [I] RewriteRule ^(.*)/tags/(.*)\/([0-9])(?:(\?.*))* $1/tags\.php\?\/$2\/$3 [I] RewriteRule ^(.*)/tags/(.*)\/([0-9])\/(?:(\?.*))* $1/tags\.php\?\/$2\/$3\/ [I] #问答伪静态规则,适用于DedeCmsV5.3-5.6版本,需要修改几处程序 RewriteRule ^(.*)/post\.html $1/post\.php [I] RewriteRule ^(.*)/type\.html $1/type\.php [I] RewriteRule ^(.*)/question-([0-9]+)\.html $1/question\.php\?id=$2 [I] RewriteRule ^(.*)/browser-1-([0-9]+)\.html $1/browser\.php\?tid=$2 [I] RewriteRule ^(.*)/browser-2-([0-9]+)\.html $1/browser\.php\?tid2=$2 [I] RewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&page=$3 [I] RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&page=$3 [I] RewriteRule ^(.*)/browser-([0-9]+)\.html $1/browser\.php\?lm=$2 [I] RewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&lm=$3 [I] RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&lm=$3 [I]
2)Apache伪静态:
打开.htaccess文件,加入如下规则:
#提供部分规则作参考 RewriteRule ^category/list-([0-9]+)\.html$ /plus/list.php?tid=$1 RewriteRule ^category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 RewriteRule ^archives/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2 RewriteRule ^index.html$ index.php
更多DedeCMS相关技术文章,请访问DedeCMS教程栏目进行学习!
以上是dedecms如何實現全站偽靜態的詳細內容。更多資訊請關注PHP中文網其他相關文章!