大家也許對php偽靜態頁面還比較陌生,今天我們就向大家具體講解php實現偽靜態化頁面的具體**,讓大家對對php偽靜態有乙個更加深入的了解。
php實現偽靜態化頁面方法一:
在你的程式初始化時使用如下**:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$php2html_fileurl
=
$_server
[
"request_uri"
];
$php2html_urlstring
=
str_replace
(
"/"
,
""
,
strrchr
(
$php2html_fileurl
,
"/"
));
$php2html_urlquerystrlist
=
explode
(
"@"
,
$php2html_urlstring
);
foreach
(
$php2html_urlquerystrlist
as
$php2html_urlquerystr
)
echo
'假靜態:$_get變數
';
print_r(
$_get
);
?>
然後php中呼叫$_get變數就像平常一樣了。
連線使用方式:
****.php/param1|1234@param2|4321
和****.php?param1=1234¶m2=4321一樣。
php實現偽靜態化頁面方法二:通過url rewrite實現鏈結靜態化
下面介紹2種簡單的apache+php下實現url重寫的方法,第一種適合有伺服器配置許可權的使用者,第二種適合租用空間的使用者,也作為我近期的學習心得的整理。
1、對於有伺服器配置許可權的使用者,推薦使用apache的mod_rewrite模組,這裡假設已經安裝好mod_rewrite模組。開啟apache的配置檔案,找到相應主機的部分,新增以下**:
1
2
rewriteengine on
rewriterule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=
$1
&id=
$2
然後在shell裡執行service httpd reload,讓apache重新載入配置就好了。現在在php頁面裡面我們可以把鏈結寫成 abc/a/1.html的形式,apache在解析這個 url的時候會rewrite成abc.php?action=a&id=1的形式,並返回正確的頁面。運用正規表示式我們可以實現幾乎任何我們想要的鏈結形式,mod_rewrite模組的功能異常強大,這裡只是乙個及其簡單的應用。
2、對於租用空間的使用者,一般都沒有辦法修改apache的配置,這裡有個變通的方法,原理是這樣的:當要傳遞引數訪問php 頁面時,正常情況下是通過自動全域性變數$_get來獲得,比如上面的鏈結,在頁面裡可以通過$_get['action'] 和 $_get['id'] 來獲得,重寫url後就不行了。現在在每個頁面裡require乙個url_rewrite.php檔案,裡面**如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$filename
=
basename
(
$_server
[
'script_name'
]);
if
(
strtolower
(
$filename
) ==
"abc.php"
)
else
}
這樣$action和$id也得到了,頁面裡鏈結可以寫成abc.php/a/1的形式來訪問相應頁面。
需要注意的是這種php實現偽靜態化頁面方法效率較第一種低,第一種方法是在web伺服器url解析過程中實現的,而這裡是在php頁面解析過程裡實現的,第2種方法只是變通,不得已而為之,要修改鏈結形式很不方便也不靈活。
PHP實現頁面靜態化 純靜態化及偽靜態化
php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是通過a...
PHP 頁面靜態化 純靜態化 偽靜態化
概念 php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是...
PHP 頁面靜態化 純靜態化 偽靜態化
概念 php靜態化分為 純靜態化 和 偽靜態化 純靜態化又分為 區域性靜態化 和 完全靜態化 純靜態化 是把php生成的動態頁面儲存成靜態的html檔案,使用者訪問該靜態頁面,而不是使用者每一次訪問都重新生成一張相同的網頁,優點就是減小伺服器開銷,區域性靜態化 是生成的靜態檔案中,有區域性的資料還是...