首頁 >CMS教程 >DEDECMS >dedecms如何實現全站偽靜態

dedecms如何實現全站偽靜態

尚
原創
2019-07-20 13:54:464001瀏覽

dedecms如何實現全站偽靜態

織夢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=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;1&#39; class=&#39;np&#39; checked="checked" />链接到默认页
              <input type=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;0&#39; class=&#39;np&#39; />链接到列表第一页
              <input type=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;-1&#39; class=&#39;np&#39; />使用动态页</td>

改為:

<td height="26" style="padding-left:10px;">栏目列表选项:</td>
            <td><input type=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;1&#39; class=&#39;np&#39; />链接到默认页
              <input type=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;0&#39; class=&#39;np&#39; />链接到列表第一页
              <input type=&#39;radio&#39; name=&#39;isdefault&#39; value=&#39;-1&#39; checked="checked" class=&#39;np&#39; />使用动态页</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[&#39;cfg_phpurl&#39;]."/list.php?tid=".$typeid;
  替换为
  //动态
  $reurl = "/category/list-".$typeid.".html";

 B.將GetFileName()中的下列程式碼:

 //动态文章
  if($cfg_rewrite == &#39;Y&#39;)
  {
  return $GLOBALS["cfg_plus_dir"]."/view-".$aid.&#39;-1.html&#39;;
  }
  替换为
  //动态文章
  if($cfg_rewrite == &#39;Y&#39;)
  {
  return "/archives/view-".$aid.&#39;-1.html&#39;;
  }

3)DedeCms列表分頁偽靜態:

開啟/include/arc.listview.class.php,找到取得動態的分頁清單GetPageListDM()函數結尾處:
  

$plist = str_replace(&#39;.php?tid=&#39;, &#39;-&#39;, $plist);

#取代為

#
 $plist = str_replace('plus', 'category', $plist);//将默认的plus替换成category
  $plist = str_replace(&#39;.php?tid=&#39;, &#39;-&#39;, $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(&#39;plus&#39;, &#39;archives&#39;, $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[&#39;link&#39;] = $cfg_cmsurl."/tags.php?/".urlencode($row[&#39;keyword&#39;])."/";

替换为

$row[&#39;link&#39;] = $cfg_cmsurl."/tags/".urlencode($row[&#39;keyword&#39;])."/";

到这里,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn