首頁 > 後端開發 > PHP問題 > php如何做偽靜態處理

php如何做偽靜態處理

(*-*)浩
發布: 2023-02-24 12:22:02
原創
4913 人瀏覽過

偽靜態是什麼:

php如何做偽靜態處理

網站分為動態網站和靜態網站,我們常見的以html結尾的一般都是靜態頁面,以.php.asp結尾的頁面一般是動態網站,動態網站是有和資料庫進行互動才被稱為動態網站,動態網站由於不容易被搜尋引擎搜尋所以才有了偽靜態這麼一說。 (推薦學習:PHP程式設計從入門到精通

偽靜態顧名思義就是假的靜態網站,也就是說動態網站為了方便被搜尋引擎收錄,利用伺服器的rewirte實現的假靜態的過程。

 那PHP實作偽靜態有多少種方法了?

1、使用apache的URL重寫規則,這個大家都懂,在apache裡面設定, 這裡同學們都造,只列舉一段簡單的設定

RewriteEngine On
RewriteRule ^/test.html index.php?controller=index&action=test [L]
登入後複製

2、使用PHP的pathinfo ,  你是不是有看到有的網站這樣玩'www.xxx.com/index.php/c/index/a/test/id/100 ' , 當然要支援這種你需要把'php.ini' 中的參數

'cgi.fix_pathinfo' 設為1。拿'www.xxx.com/index.php/c/index/a/test/id/100'來舉例

echo $_SERVER['PATH_INFO']; //输出'/c/index/a/test/id/100'
登入後複製

到這,應該明白了吧,你再對這段進行解析,分配實際位址

3、使用404機制,一般情況下偽靜態都是實際不存在的頁面,因此可以使用apache 404配置,但是有些問題,就是'post'類型的請求會被拋棄,導致你無法取得'$_POST',

但是'$_GET'仍然可以取得, 假設此處404頁面為'404page.php', apache 設定如下:

ErrorDocument 404 /404page.php
登入後複製

然後在'404page.php'中嵌入以下程式碼

header("HTTP/1.1 200 OK"); //这里一定要有,不然状态就是404

$reqUrl = $_SERVER['REQUEST_URI']; // 请求地址

/**
* 从URL中解析参数
*/
function parseUrlParams($queryUrl)
{
    $arr = explode('?', $queryUrl);
    parse_str($arr[1], $param);
    if($param)
    {
        foreach($param as $key => $value)
        {
            $_GET[$key] = $value;
        }
    }
}

parseUrlParams($reqUrl); // url解析参数

//然后你就可以使用 $reqUrl 根据自己的规则匹配不同的实际请求地址
if(preg_match('#^/test.html#is', $reqUrl, $matches))
{
   include('index.php');
   die();
}
登入後複製

以上是php如何做偽靜態處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板