本文目錄一覽:
求織夢手機站偽靜態規則及URL 重寫規則
最近很多朋友來問織夢58的站點的偽靜態是怎麼寫的,今天就拿出來和大家分享一下子。呵呵
dedecms(織夢)完美實現偽靜態的方法
dedecms(織夢)完美實現偽靜態的方法
測試版本:Dedecms V5.6版本
測試平台:Windows 7
測試環境:IIS 7.5
成功。其他條件下大同小異。
需要的條件:
1、伺服器必須支持URL重寫。
2、後台開啟偽靜態。
3、欄目設置使用動態。
4、添加文檔時選擇使用動態瀏覽。
5、修改php文件include/channelunit.func.php。
6、修改include/arc.listview.class.php。
7、編寫rewrite規則。
操作步驟:
1、載入Rewrite模塊(過程略)。
2、dedecms後台-系統-系統基本參數-核心設置-是否使用偽靜態,選「是」。
3、把欄目和文檔設置成為動態瀏覽。可以手動,用sql語句更快。
dedecms後台-SQL命令行工具,執行以下語句
將所有文檔設置為「僅動態瀏覽」:update dede_archives set ismake=-1
將所有欄目設置為「使用動態頁」:update dede_arctype set isdefault=-1
改成1就是靜態。動態轉換為靜態後需要重新生成HTML。
添加欄目和文章默認為動態的一勞永逸的方法:
4、修改php文件include/channelunit.func.php
查找
return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html’;
修改為
return “/view-“.$aid.’-1.html’;
查找
return $GLOBALS[‘cfg_phpurl’].”/view.php?aid=$aid”;
修改為
return “/view.php?aid=$aid”;
其實頁可以不修改,就是URL地址會長一點。這個是文章頁的。
查找
$reurl = $GLOBALS[‘cfg_phpurl’].”/list.php?tid=”.$typeid;
修改為
$reurl = “/list-“.$typeid.”.html”;
這個必須修改,是欄目頁的。
其實不修改也可以,但是URL地址會長一點。這個是文章的。
5、打開include/arc.listview.class.php
找到
$plist = str_replace(‘.php?tid=’, ‘-‘, $plist);
(大約在第964行)
在其前面面添加一行
$plist = str_replace(‘plus/list’, ‘list’, $plist);
這個是列表頁分頁rewrite的url格式的。
默認是
現在是
6、 設置重寫規則,在httpd.ini裡面寫上:
[ISAPI_Rewrite]
# 緩存3600秒 = 1 小時(hour)
CacheClockRate 3600
RepeatLimit 32
#dedecms Rewrite規則
RewriteRule ^(.*)/index\.html$1/index\.php
RewriteRule ^(.*)/list-([0-9]+)\.html$1/plus/list\.php\?tid=$2
RewriteRule^(.*)/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$1/plus/list\.php\?tid=$2TotalResult=$3PageNo=$4
RewriteRule^(.*)/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2pageno=$3
7、如果不使用動態首頁
把rewrite規則中的
RewriteRule ^(.*)/index\.html $1/index\.php
去掉,或改為
RewriteRule ^(.*)/index\.html $1/index\.html
否則打開時會陷入死循環。
說明:
1、
RewriteRule ^view-([0-9]+)-([0-9]+)\.html$/plus/view.php?aid=$1pageno=$2
此為文章分頁重寫命令。
2、如果view替換成自己設置的其他詞,則需要把include/arc.archives.class.php文件中的view同時替換掉。
3、重寫後的URL如下:
文章頁:
列表頁:
如果需要改成如下格式:
文章頁:
列表頁:
include/channelunit.func.php中
return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html’;
改為 return “/abc/view-“.$aid.’-1.html’;
return $GLOBALS[‘cfg_phpurl’].”/view.php?aid=$aid”;
改為 return “/abc/view.php?aid=$aid”;
$reurl = $GLOBALS[‘cfg_phpurl’].”/list.php?tid=”.$typeid;
改為 $reurl = “/abc/list-“.$typeid.”.html”;
重寫規則改為:
RewriteRule ^(.*)/index\.html $1/index\.php
RewriteRule^(.*)/abc/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2
RewriteRule^(.*)/abc/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$1/plus/list\.php\?tid=$2TotalResult=$3PageNo=$4
RewriteRule^(.*)/abc/view-([0-9]+)-([0-9]+)\.html$1/plus/view\.php\?arcID=$2pageno=$3
4、偽靜態可能會出現多個url都是指向相同頁面,如果看重SEO效果,則可用robots.txt屏蔽多餘url。
什麼叫php偽靜態?
mod_rewrite是Apache的一個非常強大的功能,它可以實現偽靜態頁面。下面我詳細說說它的使用方法
1.檢測Apache是否支持mod_rewrite
通過php提供的phpinfo()函數查看環境配置,通過Ctrl+F查找到「Loaded Modules」,其中列出了所有apache2handler已經開啟的模塊,如果裡面包括「mod_rewrite」,則已經支持,不再需要繼續設置。
如果沒有開啟「mod_rewrite」,則打開目錄 您的apache安裝目錄「/apache/conf/」 下的 httpd.conf 文件,通過Ctrl+F查找到「LoadModule rewrite_module」,將前面的」#」號刪除即可。
如果沒有查找到,則到「LoadModule」 區域,在最後一行加入「LoadModule rewrite_module ,modules/mod_rewrite.so」(必選獨佔一行),然後重啟apache伺服器即可。
2.讓apache伺服器支持.htaccess
如何讓自己的本地APACHE伺服器支持」.htaccess」呢?其實只要簡單修改一下apache的httpd.conf設置就可以讓 APACHE支 持.htaccess了。打開httpd.conf文件(在那裡? APACHE目錄的CONF目錄裡面),
用文本編輯器打開後,查找
Options FollowSymLinks
AllowOverride None
改為
Options FollowSymLinks
AllowOverride All
就可以了。
3.建立.htaccess 文件
有1種最簡單的方法建立.htaccess文件:
用記事本 打開,點擊文件–另存為,在文件名窗口輸入」.htaccess」,注意是整個綠色部分,
也就是包含英文引號,然後點擊保存就行了。
4.rewrite規則學習
我們新建一個.htaccess文件之後,就在裡面寫入以下內容:
RewriteEngine on #rewriteengine為重寫引擎開關on為開啟off為關閉
RewriteRule ([0-9]{1,})$index.php?id=$1
我講解一下RewriteRule:RewriteRule是重寫規則,支持正則表達式的,上面的([0-9]{1,})是指由數
字組成的,$是結束標誌,說明是以數字結束!
好吧,現在我們可以實現偽靜態頁面了,寫下一下的規則:
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1id=$2
([a-zA-Z]{1,})-([0-9]{1,}).html$是規則,index.php?action=$1id=$2是要替換的格式,$1代表第
一個括弧匹配的值,$2代表第二個,如此類推!!
我們寫一個處理的PHP腳本:
index.php
PHP代碼
echo 『你的Action是:』 . $_GET[‘action’];
echo 『
』;
echo 『你的ID是:』 . $_GET[‘id’];
?
好了,我們現在在瀏覽器中輸入:
localhost/page-18.html
輸出的是:
你的Action是:page
你的ID是:18
php偽靜態、url重寫
你的想法是完全可行的,我舉個例子告訴你
你可以先看看這個文章,不懂的可以交流
apache一般都是在目錄下創建.htaccess來實現偽靜態,IIS不是這樣的,這跟PHP本身沒有關係,這是http伺服器與客戶端瀏覽器之間的約定
比如說
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$
index.php?action=$1id=$2
意思就是說當你訪問類似 a_1.html里的時候 apache自動跳轉到 index.php?action=$1id=$2的地方,其中$1就是左邊重寫規則的第一個變數 ([a-zA-Z]{1,}),$2就是([0-9]{1,})的第二個變數
php如何實現網頁靜態
一、靜態化的優點:
1有利於搜索引擎收錄網站頁面的信息:搜索引擎更喜歡靜態的,更變於抓取,搜索引擎SEO排名會更容易提高。
2靜態網頁化網頁穩定
3可以提高網頁載入速度
4減輕伺服器負擔,瀏覽器不需要頻發調用資料庫。
5資料庫出錯不會影響正常訪問
二、偽靜態
PHP偽靜態:是利用Apache mod_rewite實現url重寫的方法
改寫訪問地址,能夠通過URL的PATHINFO模式來改動它。讓它看上去更像一個靜態頁面。從而有更大的幾率被搜索引擎抓取和收錄,僅是對搜索引擎比較友好,偽靜態化
三、純靜態化
純靜態化,就是生成HTML文件的方式,我們須要開啟PHP自帶的緩存機制,即ob_start來開啟緩存。而且在ob_start之前不能有不論什麼輸出,否則運行失敗,然後我們用ob_get_contents函數來獲取緩存中的內容,該函數會返回一個字元串。第三個函數就是ob_end_clean,它用來清空緩存中的內容而且關閉,成功返回True,失敗返回False。
?php
if(file_exists(“match.html”) (time()-filemtime(“match.html”))300)
{
//如果存在對應的靜態文件,則直接訪問
require_once(“match.html”);
}else{
//這裡用數組來模擬資料庫操作,現實一般都是操作資料庫得到對應數據
$student = array(“huangxing”,”chenyuwei”,’xufei’,’zhangjingwen’,’xuepei’);
ob_start();
//載入模板
require_once(“muban.php”);
file_put_contents(“match.html”,ob_get_clean());
require_once(‘match.html’);
}
如何配置thinkphp的偽靜態重寫
滿足thinkphp偽靜態(url重寫)條件:
1、 伺服器開啟url_rewrite功能,linux空間的php虛擬主機只需要開啟apache的mod_rewriet,如果是iis6.0就要安裝ISAPI Rewrite模塊,apache只要開啟Mod_rewrite功能就可以了。無憂主機是linux系統的空間,開通空間默認支持。
2、 Linux空間編輯.htaccess文件,windows空間編輯httpd.ini文件。
thinkphp如何編寫.htaccess文件?
無憂主機()編寫的thinkphp偽靜態正則表達式.htaccess文件如下:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
請將上面正則表達式,保存為.htaccesss文件,並放到thinkphp項目入口文件同級目錄下。並且修改資料庫配置(config.php)文件使網站支持url重寫功能,加入代碼:define(『URL_REWRITE』,2);
原創文章,作者:ZUJCI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/316737.html