Submitted by on 2007, July 29, 1:20 PM. 網站|PHP學習
首先,你的空間得支援ReWrite,具體的設定我就不說了,上搜尋引擎查一下很多的。我這裡就講很簡單的入門。
比如,下面,我要實現這樣的URL:
http://xxx.com/0725
http://xxx.com/0726
http://xxx.com/0727
…
上面xxx.com是一個記錄《今天是》這樣的曆史內容的一個測試網站。上面連結的意思,就是顯示07月25日的曆史上發生了什麼事情,類似這樣。這樣看起來就很美觀、整齊了。要不然,可能的地址就是:
http://xxx.com/index.php?t...
http://xxx.com/index.php?t...
http://xxx.com/index.php?t...
…
現在我就是要實現把 index.php?today= 隱藏掉。以下是代碼:
1..htaccess 檔案
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)$ /index.php?today=$1
</IfModule>
粗體字這裡我說明一下,其它的按這個格式吧,具體我現在也不理解。
[0-9]的意思是,參數只能是0~9這些數字,如果你要包含任何字元,就改為:
RewriteRule ^(.+)$ /index.php?today=$1
這裡[0-9]改為了. ,這個.就代表任一字元。當然複雜的還很複雜,我們暫時不管。
2.index.php檔案
PHP代碼
- <?php
- //rewrite 測試
- $uid =$_REQUEST[’today’];
- ?>
- <HTML>
- <HEAD>
- <TITLE>rewrite 測試</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">
- 今天是<?php echo $today;?>,看看曆史上的今天都發生了什麼事情?<br>
- ……
- </BODY>
- </HTML>
這裡參數就會傳遞給index.php檔案裡的$today,在這個程式內,你就可以根據參數,進行處理,如查詢資料庫啦、做運算啦等,然後再顯示相應的資料出來,就可以了。
- <?php
- //url樣本:soft.php/1,100,8630.html
- //利用server變數 取得PATH_INFO資訊 該例中為 /1,100,8630.html 也就是執行指令碼名後面的部分
- if(@$path_info =$_SERVER["PATH_INFO"]){
- if(preg_match("///(/d+),(/d+),(/d+)/.html/si",$path_info,$arr_path)){
- $gid =intval($arr_path[1]); //取得值 1
- $sid =intval($arr_path[2]); //取得值100
- $softid =intval($arr_path[3]); //取得值8630
- //相當於soft.php?gid=1&sid=100&softid=8630
- }else die("Path:Error!");
- }else die("Path:Nothing!");
-
- echo($gid);
- echo("<br>");
- echo($sid);
- echo("<br>");
- echo($softid);
- ?>