在許多博客日志閱讀頁面裡的尾部都能看到一個永久鏈接,這個鏈接一般是持久在在的,即使博客程序換了,也可以用這個鏈接來訪問原來的日志,而不會出現找不到頁面的情況,這對於一個博客的確是一個比較實用的功能。
在修改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,完成!其實這個東西是很簡單的,這麼大篇幅大都是廢話,真正有用的就那麼一句代碼。
原文:http://www.xujiwei.cn/blog/?id=647