php偽靜態重寫規則,php偽靜態規則寫法

本文目錄一覽:

求織夢手機站偽靜態規則及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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZUJCI的頭像ZUJCI
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • 解析URI編碼規則

    URI(統一資源標識符)是用來標識互聯網上資源的字元串文本標識符,是訪問互聯網資源的地址。在將URI傳送到伺服器或瀏覽器時,需要進行特定編碼處理,這個編碼方式就是URI編碼規則。 …

    編程 2025-04-28
  • Python編寫規則用法介紹

    Python作為一種廣泛使用的高級編程語言,其編寫規則的規範性對於提高代碼可讀性、美觀度以及方便調試、維護至關重要。本文將從命名規則、注釋規則、代碼縮進等多個方面進行詳細的闡述,希…

    編程 2025-04-28
  • Python縮進規則用法介紹

    本文將從多個方面對Python的縮進規則進行詳細的闡述。 一、規則解答 Python中縮進是語法的一部分,它決定了程序的結構和邏輯。Python縮進規則要求同一層級的代碼必須保持相…

    編程 2025-04-28
  • Python元組的寫法

    Python元組是不可變的序列,也可以看作是一個不可變的列表。元組與列表不同的是,元組的元素不能修改。 一、定義元組 定義元組使用圓括弧(),並用逗號分隔元素。以下是一個簡單的示例…

    編程 2025-04-27
  • Python中通過對象不能調用類方法和靜態方法的解析

    當我們在使用Python編寫程序時,可能會遇到通過對象調用類方法和靜態方法失敗的問題,那麼這是為什麼呢?接下來,我們將從多個方面對這個問題進行詳細解析。 一、類方法和靜態方法的定義…

    編程 2025-04-27
  • Apache偽靜態配置Java

    本文將會從多個角度闡述如何在Apache中正確偽裝Java應用程序,實現URL的靜態化,提高網站的SEO優化和性能。以下是相關的配置和代碼實例。 一、RewriteEngine的配…

    編程 2025-04-27
  • 刪除靜態路由

    一、靜態路由的定義 路由(Routing)是指在一組互聯的計算機網路中,根據一定的演算法規則實現兩個節點之間選擇合適的路徑並且傳送數據包的過程。簡單來說,路由就是在網路中選擇一條可達…

    編程 2025-04-25
  • LL(1)語法分析器:從語法規則到語法樹

    在編譯原理中,語法分析是編譯器的一個重要階段。語法分析器的作用是將代碼轉換成語法樹,以便後續階段進行處理。LL(1)語法分析器是語法分析器的一種,它採用的是自頂向下的分析方法,可以…

    編程 2025-04-25
  • 靜態文件伺服器

    一、文件伺服器簡介 靜態文件伺服器是一個基於HTTP協議的伺服器應用程序,它旨在提供對本地或遠程文件系統中的靜態內容(包括HTML、CSS、圖像、視頻和JavaScript文件等)…

    編程 2025-04-24

發表回復

登錄後才能評論