在許多博客日誌閱讀頁面裡的尾部都能看到一個永久鏈接,這個鏈接一般是持久在在的,即使博客程序換了,也可以用這個鏈接來訪問原來的日誌,而不會出現找不到頁面的情況,這對於一個部落格的確是一個比較實用的功能。
在修改blog程式時,也考慮了這個問題,決定也為部落格日誌加上永久連結功能。
在 IIS6中如果請求一個目錄後面跟上參數時,會把這個參數傳給默認文檔,即如果請求我的博客首頁http://www.xujiwei.cn/blog/?id=500 ,那麼id=500將會傳遞給預設文檔default.asp。利用這點就可以實現部落格日誌的永久連結了。當然了,這個永久連結是建立在部落格目錄不改變的情況下,如果目錄改了,就需要另外處理了。
在ASP中可以利用Response.Redirect,其原理是伺服器向客戶端發送一個302 Object Moved的回應,然後客戶端根據回應進行轉向,但這個會增加額外的頻寬開銷,並且不利用搜尋引擎收錄,所以推薦使用Server.Transfer來轉向。 Server.Transfer則是直接停止目前腳本的執行,轉而執行指定的腳本,並且當前的一些變數如會話等均可在新腳本裡直接使用,而毋須再重新進行參數傳遞了,而Response.Redirect則不可以。
兩種方法的另一個比較明顯的差異就是使用Response.Redirect客戶端顯示的URL會改變,而Server.Transfer則不會,使用Server.Transfer時客戶端不會覺得目前URL其實已經改變。其實這個差異也可以透過兩種方法的呼叫方法來看出來,一個是Response.Redirect由客戶端做出改變,而Server.Transfer則是由服務端做出改變。
了解了這些就可以開始做了,打開博客的默認文檔,一般就是博客程序的首頁,如default.asp、index.asp等,然後在其有輸出內容之前加上以下代碼:
<%IF Request.QueryString ("id") Then Server.Transfer("article.asp")%>
當然了,article.asp是要根據部落格程式來做相應改變的,id即為要做為永久連結時的參數,需要注意這個參數必須為article.asp所能識別的,即article.asp可以根據這個參數來顯示日誌,如果不行的話就要做對應的改變,也就是把article.asp中的參數名稱改為id,或是把id改成其他名稱。
ok,完成!其實這個東西是很簡單的,這麼大篇幅大都是廢話,真正有用的就那麼一句程式碼。