>  기사  >  CMS 튜토리얼  >  Dedecms가 사이트 전체에 의사 정적을 구현하는 방법

Dedecms가 사이트 전체에 의사 정적을 구현하는 방법

尚
원래의
2019-07-20 13:54:463934검색

Dedecms가 사이트 전체에 의사 정적을 구현하는 방법

DreamWeaver DedeCms는 더 쉬운 관리를 위해 사이트 전체에 의사 정적이며 DedeCms는 기본적으로 최적화에 매우 친숙한 정적 HTML 파일을 생성합니다. 하지만 여전히 동적 형식의 일부 페이지가 있습니다(예: 태그 태그 페이지, 웹사이트 콘텐츠 검색 페이지, DedeCms Q&A 페이지 등). 이러한 페이지가 검색 엔진에 더 잘 포함되도록 하려면 의사 정적이어야 합니다. DedeCms 시스템의 경우 Static html 파일을 생성할 수 있지만, 매일 업데이트되는 콘텐츠의 양이 특히 많은 경우 html 파일을 생성하는 것도 시스템과 인력에 부담이 되며 의사(pseudo)로 만들 수도 있습니다. 정적 형식이므로 지루한 HTML 파일 생성이 필요하지 않습니다.

전체 DedeCms 사이트를 정적으로 만들려면 mod_rewrite 의사 정적 모듈의 지원이 필요합니다. 웹마스터가 .htaccess 정규 표현식에 능숙하다면 전체 웹사이트를 정적으로 만들 수 있습니다. 이는 검색 엔진에 더 부합하고 반복되는 URL을 피할 수도 있습니다. DedeCms 전체 사이트 의사 정적 구성은 소스 코드를 수동으로 수정해야 하기 때문에 약간 번거롭습니다. 구성 단계는 다음과 같습니다:

1 먼저 사이트의 의사 정적 기능을 활성화합니다. Dede 관리자 백엔드에 로그인 -> 시스템 -> 시스템 기본 매개변수 -> 핵심 설정 -> 의사 정적 사용 여부를 "예"로 선택합니다.

2. 의사 정적 홈페이지, 의사 정적 채널 페이지, 의사 정적 목록 페이지 및 의사 정적 기사 페이지를 구현하도록 소스 프로그램을 수정합니다. PHP 오픈 소스 프로그램은 더 복잡하고 작동하기 쉽습니다.

3. .htaccess 및 .htaccess 파일 규칙을 작성하여 DedeCms 설치 디렉터리에 업로드합니다.

Dreamweaver DedeCms 전체 사이트 의사 정적 튜토리얼: list|article|Q&A|search|TAG 의사 정적 규칙 포함:

1 . 웹사이트 서버 및 웹사이트 공간이 의사 정적을 지원하는지 여부:

이것은 특히 중요합니다. 그렇지 않으면 모든 설정이 작동하지 않습니다. 귀하의 웹사이트가 서버를 사용한다면 직접 설정할 수 있습니다. 스페이스라면 IDC 서비스 제공업체 고객 서비스에 의사 정적 지원 여부를 문의하세요(일반적으로 스페이스는 의사 정적을 지원합니다). Apache 서버 의사 정적은 비교적 간단합니다. 해당 의사 정적 규칙을 .htaccess 파일에 직접 추가하고 IIS 서버에서 의사 정적을 구현하려면 Rewrite 구성 요소를 로드한 다음 httpd.ini 파일을 구성해야 합니다.

2. DedeCMS 의사 정적 켜기:

1) DedeCms 배경 - 시스템 매개변수 - 핵심 설정 - 의사 정적 사용 여부 : "예" 선택;

2) DedeCms 질문 및 답변 모듈을 활성화하는 경우 백그라운드 - 시스템 매개변수 - 모듈 설정 - 재작성 사용 여부:

을 선택합니다. #🎜🎜 #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>
#🎜 🎜#Changed to: #🎜🎜 #

<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을 생성한 경우 background-system-SQL 명령줄 도구에서 다음 명령문을 실행하면 됩니다. # 🎜🎜#

update dede_arctype set isdefault=-1;
update dede_archives set ismake=-1;

참고: 명령의 dede는 웹사이트 설치 중 데이터 테이블 접두사입니다. 실제 상황에 따라 교체하세요.

3. DedeCms 의사 정적 지원을 켜는 것은 백그라운드에서 완전히 구성할 수 없습니다. 여전히 수동으로 수정해야 하는 곳이 많습니다. 다음은 V5.3 이상에 적용되는 DedeCms full-site pseudo-static 구현 방법을 설명합니다. 이번에 DedeCms 의사 정적 테스트 환경은 Windows IIS6입니다. 아이디어가 명확한 한 Linux 또는 기타 서버에 대한 의사 정적 구현 원칙은 동일합니다.

1) DedeCms 홈 페이지는 의사 정적입니다.

사이트의 루트 디렉터리에 있는 index.html을 삭제하고 앞으로는 홈페이지 HTML을 업데이트하지 마세요. 물론 동적 전면 페이지를 사용하지 않도록 선택할 수도 있습니다.

2) DedeCms 채널 | 목록 페이지 | 기사 페이지 pseudo-static:

주로 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 목록 페이징 의사 정적:

Open /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 기사 페이징 의사 정적:

Open /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으로 문의하세요.