完美實現dedecms的TAG標簽偽靜態(適用Apache和IIS服務器)

        作者:思帽網絡     發布時間:2019-07-10 12:04:37

              說起dedecms的tag標簽偽靜態化,很多剛接觸的小伙伴都很頭疼吧,網上找了一大堆資料,實現是可以,但總是不可避免的有一些小錯誤,導致無法完美運行,今天西寧網站建設思帽網絡為大家帶來全網最完美無錯的tag標簽偽靜態方法,快來記筆記吧!

        第一步,和你在網上找到的方法一樣,找到根目錄下面的tag.php中的這段代碼,如下:

            

        QQ圖片20190710114455.png

        將其替換成如下代碼:

        //偽靜態化
        $tagid = (isset($tagid) && is_numeric($tagid)) ? $tagid : 0;
        $PageNo = (isset($PageNo) && is_numeric($PageNo)) ? $PageNo : 1;
        if ($tagid =="0") {
        $dlist = new TagList($tag, 'tag.htm');
        $dlist->Display();}
        else{$row = $dsql->GetOne("SELECT tag FROM `dede_tagindex` WHERE id ={$tagid}");
        if (!is_array($row)) {ShowMsg('系統無此tag', '-1');
        exit();}
        $tag = FilterSearch($row['tag']);
        $dlist = new TagList($tag, 'taglist.htm');
        $dlist->Display();}
        exit();


        第二步,在include\taglib中找到tag.lib.php文件的$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";(大約在88行左右),替換成  $row['link'] =  "/tags/{$row['id']}.html";


        第三步,就是修改我們的分頁代碼,找到include文件下的arc.taglist.class.php中的GetPageListDM函數(重點:區別于網上其它方法),請用以下代碼替換:

        function GetPageListDM($list_len,$listitem="info,index,end,pre,next,pageno")
            {
                $prepage="";
                $nextpage="";
                $prepagenum = $this->PageNo - 1;
                $nextpagenum = $this->PageNo + 1;
                if($list_len == "" || preg_match("/[^0-9]/", $list_len))
                {
                    $list_len = 3;
                }
                $totalpage = $this->TotalPage;
                if($totalpage <= 1 && $this->TotalResult > 0)
                {
                    return "<span class=\"pageinfo\">共1頁/".$this->TotalResult."條</span>";
                }
                if($this->TotalResult == 0)
                {
                    return "<span class=\"pageinfo\">共0頁/".$this->TotalResult."條</span>";
                }
                $maininfo = "<span class=\"pageinfo\">共{$totalpage}頁/".$this->TotalResult."條</span>\r\n";
                
                $basename = $this->TagInfos;
                $purl = $basename['id'];

                //獲得上一頁和下一頁的鏈接
                if($this->PageNo != 1)
                {
                    $prepage.="<li><a href='".$purl."-$prepagenum.html'>上一頁</a></li>\r\n";
                    $indexpage="<li><a href='".$purl."-1.html'>首頁</a></li>\r\n";
                }
                else
                {
                    $indexpage="<li><a>首頁</a></li>\r\n";
                }
                if($this->PageNo!=$totalpage && $totalpage>1)
                {
                    $nextpage.="<li><a href='".$purl."-$nextpagenum.html'>下一頁</a></li>\r\n";
                    $endpage="<li><a href='".$purl."-$totalpage.html'>末頁</a></li>\r\n";
                }
                else
                {
                    $endpage="<li><a>末頁</a></li>\r\n";
                }

                //獲得數字鏈接
                $listdd="";
                $total_list = $list_len * 2 + 1;
                if($this->PageNo >= $total_list)
                {
                    $j = $this->PageNo - $list_len;
                    $total_list = $this->PageNo + $list_len;
                    if($total_list > $totalpage)
                    {
                        $total_list = $totalpage;
                    }
                }
                else
                {
                    $j=1;
                    if($total_list > $totalpage)
                    {
                        $total_list = $totalpage;
                    }
                }
                for($j; $j<=$total_list; $j++)
                {
                    if($j == $this->PageNo)
                    {
                        $listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n";
                    }
                    else
                    {
                        $listdd.="<li><a href='".$purl."-$j.html'>".$j."</a></li>\r\n";
                    }
                }
                $plist  =  '';
                if(preg_match('/info/i', $listitem))
                {
                    $plist .= $maininfo.' ';
                }
                if(preg_match('/index/i', $listitem))
                {
                    $plist .= $indexpage.' ';
                }
                if(preg_match('/pre/i', $listitem))
                {
                    $plist .= $prepage.' ';
                }
                if(preg_match('/pageno/i', $listitem))
                {
                    $plist .= $listdd.' ';
                }
                if(preg_match('/next/i', $listitem))
                {
                    $plist .= $nextpage.' ';
                }
                if(preg_match('/end/i', $listitem))
                {
                    $plist .= $endpage.' ';
                }
                return $plist;
            }


        第四步,設置Apache的.htaccess中的規則(完美解決),如下:

        <IfModule mod_rewrite.c>
          Options +FollowSymlinks
          RewriteEngine On

          RewriteRule ^tags/([0-9]+)-([0-9]+).html$        tags.php?tagid=$1&PageNo=$2 [L]
          RewriteRule ^tags/([0-9]+).html$                tags.php?tagid=$1 [L]
        </IfModule>

        第五步,設置IIs的web.config中的規則(完美解決),如下:

        <configuration>
            <system.webServer>
                <rewrite>
                    <rules>
                       <rule name="weather1" stopProcessing="true">
                            <match url="tags/([^-]+).html$" ignoreCase="true" />
                            <conditions logicalGrouping="MatchAll">
                                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                            </conditions>
                            <action type="Rewrite" url="/tags.php?tagid={R:1}" appendQueryString="false" />
                        </rule>
                        <rule name="weather2" stopProcessing="true">
                            <match url="tags/([^-]+)-([0-9]+).html$" ignoreCase="true" />
                            <conditions logicalGrouping="MatchAll">
                                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                            </conditions>
                            <action type="Rewrite" url="/tags.php?tagid={R:1}&amp;PageNo={R:2}" appendQueryString="false" />
                        </rule>
                      
                    </rules>
                </rewrite>
            </system.webServer>
        </configuration>


        好了,以上就是思帽網絡為廣大網站建設者提供的最完美解決方案,如有任何交流都可以聯系我們,請時刻關注我們的官網(http://www.gurubangles.com)動態!


        服務支持

        青海思帽網絡珍惜您每一次在線詢盤,任何有關網絡問題有問必答,用專業的態度,貼心的服務。

        讓您感受西寧網站建設公司服務的五星級服務!

        西寧網站建設

        網站建設流程

        網站制作流程從提出需求到網站制作報價,再到網頁制作,每一步都是規范和專業的

        西寧網站建設

        網絡服務常見問題

        提供什么是網站定制?你們的報價如何?等網站建設常見問題。

        西寧網站建設

        網絡服務保障

        網站制作不難,難的是一如既往的熱情服務及技術支持。我們知道:做網站就是做服務,就是做售后

        女百合互慰高潮在线观看