ホームページ  >  記事  >  CMS チュートリアル  >  dedecms がサイト全体に擬似静的機能を実装する方法

dedecms がサイト全体に擬似静的機能を実装する方法

尚
オリジナル
2019-07-20 13:54:463934ブラウズ

dedecms がサイト全体に擬似静的機能を実装する方法

DedeCms のサイト全体は、管理と SEO を容易にするために擬似静的です。DedeCms はデフォルトで静的 HTML ファイルを生成します。これは最適化に非常に適していますが、まだいくつかのファイルが存在します。ページは動的形式です (タグ ページ、Web サイト コンテンツ検索ページ、DedeCms Q&A ページなど)。これらのページを検索エンジンにより適切に含めるためには、擬似静的ページを作成する必要があります。システムでは静的なHTMLファイルを生成することもできますが、毎日更新されるコンテンツの量が特に多い場合、HTMLファイルの生成もシステムや人手に負担となるため、擬似的に静的な形式にして、HTMLファイルの生成を不要にすることもできます。面倒な HTML ファイルの生成が必要になります。

DedeCms サイト全体を静的にします。これには、mod_rewrite 擬似静的モジュールのサポートが必要です。 Web マスターが .htaccess 正規表現に精通している限り、dede Web サイト全体を静的にすることができます。これにより、検索エンジンとの整合性が高まり、URL の繰り返しも回避できます。 DedeCms のフルサイトの擬似静的構成は、主にソース コードを手動で変更する必要があるため、少し面倒です。整理手順は次のとおりです:

1. まず、サイトの擬似静的機能を有効にします。 DEDE 管理者バックエンドにログイン -> システム -> システム基本パラメータ -> コア設定 -> 擬似静的を使用するかどうか「はい」を選択します。

2. ソースプログラムを修正して、擬似静的ホームページ、擬似静的チャンネルページ、擬似静的リストページ、擬似静的記事ページを実現します。他の PHP オープンソース プログラムほど優れたものではありませんが、シンプルです。

3. .htaccess および .htaccess ファイル ルールを作成して書き込み、DedeCms のインストール ディレクトリにアップロードします。

DedeCms フルサイト擬似静的チュートリアル: list|article|Q&A|search|TAG 擬似静的ルールを含む:

1. Web サイトサーバーと Web サイトかどうかスペースはそれをサポートします 擬似静的:

これは特に重要であり、そうでないとすべての設定が機能しません。 Web サイトがサーバーを使用している場合は、自分でセットアップできますが、スペースの場合は、IDC サービス プロバイダーのカスタマー サービスに擬似静的をサポートしているかどうかを問い合わせることができます (一般的なスペースは擬似静的をサポートしています)。 Apache サーバーの擬似静的機能は比較的単純で、対応する擬似静的ルールを .htaccess ファイルに直接追加するだけです。また、IIS サーバーに擬似静的機能を実装するには、Rewrite コンポーネントをロードして httpd.ini ファイルを構成する必要があります。

2. DedeCMS 擬似静的をオンにする:

1) DedeCms バックエンド - システム パラメーター - コア設定 - 擬似静的を使用するかどうか: 「はい」を選択します。

2) DedeCms 質問と回答モジュールを有効にした場合、バックグラウンドで - システム パラメーター - モジュール設定 - Rewrite を使用するかどうか: 「はい」を選択;

3) 列を作成するときまたはバッチで列を追加する場合、列リスト オプション: [動的ページを使用する] を選択します。新しい記事を追加する場合、公開オプション: [動的ブラウジングのみ] を選択します。同様に、これら 2 つの値がデフォルトになるようにテンプレートを変更することもできます。変更方法は非常に簡単で、次のとおりです。

バックグラウンド ファイルを見つけます: /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) Web サイトに静的列または記事 HTML がすでに生成されている場合は、background-system-SQL コマンド ライン ツールで次のステートメントを実行するだけです:

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

注: dedeコマンド内のデータテーブルプレフィックスはWebサイトインストール時のデータテーブルプレフィックスですので、実際の状況に応じて置き換えてください。

3. DedeCms の擬似静的サポートをオンにすることは、バックグラウンドで完全に構成することはできず、手動で変更する必要がある箇所が多数あります。 V5.3以降に適用可能なDedeCmsフルサイト擬似静的実装方法について説明します。今回の DedeCms 擬似静的テスト環境は Windows IIS6 ですが、考え方が明確であれば、Linux や他のサーバーでも擬似静的実装の原理は同じです。

1) DedeCms の疑似静的ホームページ:

サイトのルート ディレクトリにあるindex.html を削除し、今後ホームページの HTML を更新しないでください。また、動的ホームページを使用しないことも選択します。

2) DedeCms チャンネル | リスト ページ | 記事ページ 擬似静的:

主に、GetFileName() と GetTypeUrl() の 2 つの関数を変更することで実現されます。 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。