① php生成偽靜態html利於seo還是直接生成靜態利於SEO
PHP網站優化,動態網站生態靜態頁和實現偽靜態是必走之路,一般採用路徑偽靜態和頁面靜態兩種方面。
至於優缺點,首先,我們要明確兩個概念:
1、偽靜態是將動態語言的後綴通過一定的手段,轉為 html後綴,伺服器上實際訪問的是動態的地址。這叫偽靜態。蜘蛛對html後綴的網頁比較友好。不少網站就採用這樣的方式,這樣可以欺騙蜘蛛.達到seo優化的效果。
2、生成靜態,是將腳本執行過後的內容輸入到文本中。這樣,下次再請求,就不用伺服器去處理了。而是直接返迴文本中的內容。這樣可以加快訪問的速度。
各自的缺點:
1、偽靜態訪問是實時生產頁面,訪問量大了就會佔用很大的CPU資源。影響伺服器處理速度。
2、靜態頁生成頁面,內容多時就會產生更多的磁碟碎片。
但一般企業型網站,內容本身都不多,影響都不大。
什麼樣的情況下用好?
1、使用聯動數據的,需要調用資料庫數據實時顯示的,最好用偽靜態。如果是超大型的網站,比方說同一個程序開發的網站數據量超過百萬以上,我們還是主張不要全部採用生成靜態頁的方式,即使是世上最好的程序員開發出來的,性能最好的內容管理系統。因為生成靜態頁首頁是維護起來比較麻煩,伺服器里所生成的文件目錄和文件都是比較多的,而且將嚴重耗費時間和伺服器資源和性能。
2、頁面簡單,內容相對固定的,益用靜態頁。
3、適當相互結合。
一般大型門戶網站都是在採用多個程序,多個伺服器,多個二級域名的戰略。一個網站肯定會採用很多不同類型的程序和開源程序綜合使用,可以把核心的版塊和欄目實現靜態化。更有利於搜索引擎抓取和減輕伺服器的壓力。
② php如何生成靜態頁面
lz只是想要主頁生成靜態嗎?這種問題我回答過,也許可以幫助你
如果是這樣就在你的主頁(index.php)同一文件夾下建立index0.php並保證當前文件夾可以寫入
index0.php代碼如下
<?php
ob_start(); //將這里以後的所有輸出內容保存
include('index.php'); //載入原首頁
$write=ob_get_contents(); //ob_get_contents函數獲取輸出內容,兼容php4以上版本
if (!$fh = fopen('index.html', 'w')) {
exit("不能打開文件 'index.html'");
}
if(fwrite($fh,$write)===false){
exit("不能寫入文件 'index.html'");
}
fclose($fh);
echo "靜態首頁成功更新!"
?>
每次打開這個頁面(index0.php),都會直接顯示你的首頁(動態地)並將顯示的東西寫入index.html文件,並在最後顯示是否成功更新。當然你可以選擇不顯示更新狀態,看你喜歡如何
以後你就可以通過訪問index0.php來生成靜態首頁,靜態首頁為index.html
③ 如何用PHP輸出靜態頁面
用PHP輸出靜態頁面有2種方法
一種是利用模板技術,另一種是用ob系列函數。兩種方法,看起來都差不多,但是實際上,卻是不同的。
第一種:利用模板
目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smarttemplate等。
它們每一種模板,都有一個獲取輸出內容的函數。
我們生成靜態頁面的方法,就是利用了這個函數。
用這個方法的優點是,代碼比較清晰,可讀性好。
這里我用smarty做例子,說明如何生成靜態頁
<?php
require('smarty/Smarty.class.php');
$t=newSmarty;
$t->assign("title","HelloWorld!");
$content=$t->fetch("templates/index.htm");
//這里的fetch()就是獲取輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
$fp=fopen("archives/2005/05/19/0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>
第二種方法:利用ob系列的函數
這里用到的函數主要是ob_start(),ob_end_flush(),ob_get_content(),
其中ob_start()是打開瀏覽器緩沖區的意思,
打開緩沖後,所有來自PHP程序的非文件頭信息均不會發送,
而是保存在內部緩沖區,直到你使用了ob_end_flush().
而這里最重要的一個函數,就是ob_get_contents(),
這個函數的作用是獲取緩沖區的內容,相當於上面的那個fetch(),
道理一樣的。代碼:
<?php
ob_start();
echo"HelloWorld!";
$content=ob_get_contents();//取得php頁面輸出的全部內容
$fp=fopen("0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>
④ phpcms 我生成靜態文件路徑是/html , 但是生成的頁面上的url也帶著html啊,怎麼能去掉這個
1 修改配置文件。找到\caches\configs\system.php 找到「html_root」這一項,然後把/html這個字元串刪除。
創建或者修改欄目時,在「生成HTML設置」中,設置「是否生成到根目錄」為 「是」
然後更新緩存,更新url更新欄目、更新內容頁面。更新首頁