1. 程式人生 > 實用技巧 >淺談PHP實現偽靜態(多個介紹地址)

淺談PHP實現偽靜態(多個介紹地址)

最近在某公司實習,用php爬蟲抓取網站頁面,存到資料庫,然後自己寫個網站呼叫資料庫,然後進行SEO,要求採集、遠端資料本地化,偽靜態,關鍵字優化,無死鏈無孤島;做完以後就可以進入專案組了。


PHP實現偽靜態實際是為了SEO(Search Engine Optimization搜尋引擎優化),也就是說像google和百度之類的spider不喜歡動態的頁面,所以
你顯示的時候就以.html或者目錄之類的表現,其實在伺服器端是php檔案。也就是說搜尋引擎不喜歡/page.php?id=4這樣的頁面,而是喜歡/4.html這樣的頁面,對其非常友好(有利於收錄),當然你不會直接弄出N個html頁面吧。


一、那麼最簡單的方法
Apache+PHP下實現URL重寫(偽靜態)


1、編譯apache mod_rewrite模組使其支援重寫URL


2、在http.conf裡面查詢Options FollowSymLinks,將後面的AllowOverride None改成AllowOverride All。(便於第二路使用)這個時候兵分兩路,有http.conf許可權的可以自己在http.conf後面新增url rewrite規則


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2

</IfModule>
第二路就只好在程式碼根目錄建立.htaccess檔案,這個檔案建立比較簡單,有3種方法,最簡單的當然是建立.htaccess然後記事本開啟另存為.htaccess,另外就是cmd下rename和ftp軟體修改。


3.rewrite規則
看個例子就懂了
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2
</IfModule>
$是終止符,前面寫個正則表示式,$1獲取第一個子模式(小括號裡面的東東),$2獲取第二個子模式東東。

友情提示 ^是開頭,不要忘記加了
如果有2個引數,也很簡單,自行處理。
也就是說
瀏覽器裡面顯示的如果是4.html(你的檔案裡面的連結寫成.html的)的話,實際呼叫的是page.php?id=4,這樣瀏覽器的輸入欄都是html,達到了偽靜態。
當然你改寫不同正則,顯示的url當然就不同了,隨你喜歡的該。
遇見多行的話不要妄自加分號。如下才是對的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2
RewriteRule ^(.*)/index.html$ $1/index.php
RewriteRule ^(.*)/wenzhang.html$ $1/wenzhang.php
RewriteRule ^(.*)/gushi.html$ $1/gushi.php
RewriteRule ^(.*)/sanwen.html$ $1/sanwen.php
RewriteRule ^(.*)/zawen.html$ $1/zawen.php
RewriteRule ^(.*)/shige.html$ $1/shige.php
RewriteRule ^(.*)/riji.html$ $1/riji.php
RewriteRule ^(.*)/xiaoshuo.html$ $1/xiaoshuo.php
RewriteRule ^(.*)/contact.html$ $1/contact.php
</IfModule>


綜述就是網址重寫引擎和指定一些重寫規則.,嘗試Faking URL Suffix(偽造URL字尾),看起來很靜態化,提高了安全性和SEO友好度。
4.重啟apache。


windows的httpd.conf很好找,在conf目錄(我指的是你如果沒用整合包的話)
Linux在opt/lampp/etc目錄裡面有httpd.conf(一般linux下推薦用Xampp按照包,安裝在opt目錄)
同樣進行上面工作restart一下就ok
login as: root
Server refused our key
[email protected]'s password:
Last login: Thu Jul 21 14:26:26 2011 from 112.65.219.75
[[email protected] ~]# who
root pts/0 2011-07-21 14:32 (112.65.219.75)
[[email protected] ~]# /opt/lampp/lampp restart
Stopping XAMPP for Linux 1.6.4...
XAMPP: Stopping Apache with SSL...
XAMPP: Stopping MySQL...
XAMPP: Stopping ProFTPD...
XAMPP stopped.
Starting XAMPP for Linux 1.6.4...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
稍等就行了。
5.部分程式碼指導:
<?php
echo "<tr>";
$i=$row['id'];//資料庫表insun4中的id列,為了。。。。
echo "<td> <a href=\"$i.html\">".$row['title']."</a></td>";
//echo "<td> <a href=\"page.php?id=$i\">".$row['title']."</a></td>";
//echo "<td> <a href=\"page.php?id=$i\">".$row['description']."</a></td>";
echo "<td> <a href=\"$i.html\">".$row['description']."</a></td>";
echo "</tr>";
?>

<?php
include 'config.php';
set_time_limit(0);//防止超時顯示錯誤。
mysql_query("set names'gbk'");//utf8
//$url = "http://www.jj59.com/";
$gid = $_GET['id'];
$query="select * from insun4 where id = $gid" ;//用like選擇性輸出。where link like'http://www.jj59.com/yuanchuang/%'
//echo $query;
$queryresult=mysql_query($query) or die("查詢資料失敗");//執行查詢
//echo var_dump($queryresult);

while($row = mysql_fetch_array($queryresult)){
echo ($row['content'])."<br>";
}
?>


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/([0-9]{1,}).html$ $1/page.php?id=$2
RewriteRule ^(.*)/index.html$ $1/index.php
RewriteRule ^(.*)/wenzhang.html$ $1/wenzhang.php
RewriteRule ^(.*)/gushi.html$ $1/gushi.php
RewriteRule ^(.*)/sanwen.html$ $1/sanwen.php
RewriteRule ^(.*)/zawen.html$ $1/zawen.php
RewriteRule ^(.*)/shige.html$ $1/shige.php
RewriteRule ^(.*)/riji.html$ $1/riji.php
RewriteRule ^(.*)/xiaoshuo.html$ $1/xiaoshuo.php
RewriteRule ^(.*)/contact.html$ $1/contact.php
</IfModule>


二、看到網上有2-3個方法,都是寫個Url_rewrite函式,然後require的,感覺不好就不推薦大家了,大家可以去搜索下。
一般都是藉助於apache,nginx,htaccess等,很少用php來實現url的靜態化,用php來實現靜態化比較麻煩。


如果出現下面這樣,說明你沒配置好。

淺談PHP實現偽靜態 - InSun - Minghacker is Insun
如果出現下面這樣,說明你配置好了,只是rewrite規則寫的不對,檢查下好了。

淺談PHP實現偽靜態 - InSun - Minghacker is Insun
如果出現下面,恭喜你。

淺談PHP實現偽靜態 - InSun - Minghacker is Insun
淺談PHP實現偽靜態 - InSun - Minghacker is Insun

介紹偽靜態的一些常見的網址:


php 偽靜態(url rewrite)apache配置

http://hi.baidu.com/%B9%D6%CA%AF/blog/item/2659b6af548923d57cd92ab9.html


三種實現PHP偽靜態頁面的方法:http://www.2cto.com/kf/201108/100056.html


友好URL的實現(吐血推薦)http://www.2cto.com/kf/201006/49208.html


PHP實現偽靜態化頁面的具體實現方式http://www.2cto.com/kf/201108/100058.html


PHP偽靜態與防注入http://www.2cto.com/Article/201108/100059.html


Php引數傳遞以及php獲取url引數之後的較合理安排

http://hi.baidu.com/wd1314521/blog/item/3af604822f1938b70df4d2e3.html


php實現偽靜態化頁面的兩種方法(包括兩種url重寫的方法

http://hi.baidu.com/newyorkmen/blog/item/f998131ae4121b0d34fa4167.html/cmtid/6becf7c0d5fd6d38e4dd3b08PHP頁面實現靜態化講解和詳細程式碼

http://hi.baidu.com/newyorkmen/blog/item/f387e3b723dddac437d3ca66.html

轉載於:https://blog.51cto.com/aaronxiao/646138