首先自我介紹一下,我是一個前端人員,對于背景的知識也是知之甚少;有什麼不足之處請諒解!
好了,現在我介紹一下 php怎麼進行僞靜态頁面的實作;
我相信大家都見過這樣格式的網址,你一定會好奇他們是怎麼做的;
http://c/123.html
http://www.rmtime.com/rm-123.html
http://www.rmtime.com/rm-a-2-b-213-c-3.html
他們是怎麼做到的,難道他們不用傳遞id或者tid等變量嗎
我們知道一般的網站傳遞參數都是以
http://www.rmtime.com/rm.php?tid=1
這種形式來傳遞的,這種形式他不利于seo搜尋排名;
好,廢話不多說了!
步驟:
1.apache的配置 僞靜态
2.建立 .htaccess
3.編寫相關 僞靜态 規則(簡單執行個體)
配置apache 僞靜态
首先我們找到 httpd.conf 這個檔案;
舉例:
C:\wamp\bin\apache\apache2.2.8\conf\httpd.conf
打開這個檔案;
搜尋:
#LoadModule rewrite_module modules/mod_rewrite.so
把他前面的#去掉,
接着
在httpd.conf中
找到
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
把裡面的
AllowOverride
改為All
儲存
這樣apache的基本配置就做好了!
下一步就是建立 .htaccess檔案,把他存放在網站的根目錄下;
注意:在window作業系統下是無法建立的;
解決辦法:
這樣就建立在網站的根目錄了;
接着我們用記事本打開此.htaccess檔案
粘貼這段
<IFMODULE mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule rmtime-([0-9]*).html$ rmtime.php?id=$1
</IFMODULE>
本地建立 rmtime.php
内容是:
<?php echo $_GET['id']; ?>
儲存
服務方式:
localhost / rmtime-12.html
如果頁面顯示12那麼說明實驗成功!恭喜!
相關規則例子:
例子一:
原先:http:// www.rmtime.com / rmtime.php?id=123
處理後 : http:// www.rmtime.com / 123.html
規則 : RewriteRule ([0-9]+).html$ rmtime.php?id=$1
例子二:
原先:http:// www.rmtime.com / rmtime.php?id=123
處理後 : http:// www.rmtime.com / rm-123.html
規則 : RewriteRule rm-([0-9]+).html$ rmtime.php?id=$1
例子三:
http://www.rmtime.com /rmtime.php?a=a1&b=b1&c=c1
RewriteRule ^(.*)-htm-a-([a-z0-9\_]+)-b-([a-z0-9\_]+)-c-([a-z0-9\_]+.html)$ rmtime.php?a=&b=&c=
規則
%{HTTP_HOST}
:
是指取得使用者通路的URL的主域名 然後空格後面是一個正規表達式比對,意識就
是說是否是 nbphp.com
RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]
R的含義是redirect,即重定向,該請求不會再被apache交給後端處理,而是直接
傳回給浏覽器進行重定向跳轉。301是傳回的http狀态碼,具體可以參考http rfc
文檔,跳轉都是3XX。
L是last,即最後一個rewrite規則,如果請求被此規則命中,将不會繼續再向下
比對其他規則。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
%{REQUEST_FILENAME} 請求的檔案名
!-f 不是檔案或不存在
!-d 不是目錄或不存在
[L] 這是最後一個比對項,不再往下比對
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
意思就是說将所有頁面全部指向index.php上。我估計可能是某段用來靜态化頁面
的代碼吧。