幾點說明
中文翻譯版可能包含錯誤,應以 W3C 官方網站的英文原版為准
上方導航欄中可以查看每個小貼士的英文原版及繁體中文版
版權資訊在頁面最下方
使用標準的重定向:不要破壞後退按鈕!
應該使用的方法和應該避免的技術
不要使用“refresh”進行重定向
如果你想讓地址 http://www.example.org/foo 顯示存放在 http://www.example.org/bar 的頁面內容,你不應該 像這樣使用“refresh”技術:
<META HTTP-EQUIV=REFRESH CONTENT="1; URL=http://www.example.org/bar">.
為什麼呢?因為它將破壞“後退”按鈕。想像一下讀者按下“後退”按鈕之後,網頁將被再次刷新,讀者將看到同一個頁面。讀者很有可能會變得不舒服,然後關閉流覽器視窗——這是作為網頁作者的你不太想得到的效果吧。
請使用 HTTP 重定向
在使用“refresh” meta 標籤的處理重定向的時候,我們用的是一個文檔內部的特殊指令。用戶代理(流覽器或是 Markup Validator)會下載該頁面,查找其上下文,找到“refresh”指令,等待指定的時間(設置“0”秒,可以得到立即刷新的效果,也可以設置具體的等待秒數),然後繼續導入新位址。
另一方面,“HTTP 重定向”執行得更直接,因為它是在 另一層內 完成的。當 User Agent (i.e. a browser or the validator) 首次訪問伺服器並請求該文檔時,_伺服器_自身就會判斷出該文檔要重定向到另一個位址,於是伺服器便主動告知 user-agent 它應該直接訪問新位址。
同時,“HTTP 重定向”能提供更多的方法進行重定向,因為它除了能提供給 User Agent 新地址外,還有很多功能:伺服器能提供關於重定向的目的和類型的資訊,這些資訊允許 User Agent 根據不同的重定向種類進行不同的動作。HTTP 重定向(根據伺服器發送的相關 HTTP status code)的種類如下:Permanent Redirect (HTTP 301)、 Temporary Redirect (307)、undefined redirect (302)。
參閱下面的文檔和教程學習如何通過你的伺服器使用它。
延伸閱讀
- About redirects :
- The Top Ten New Mistakes of Web Design, by Jakob Nielsen, offers a view of why refresh should not be used for redirecting a document to a new address, as well as other (do's and) don't's on web design.
- The section 10.3 Redirection 3xx in Hypertext Transfer Protocol -- HTTP/1.1, is the authoritative documentation on HTTP redirects.
- How to do redirects with your server:
- The "Redirect" directive in Apache's manual
- The Apache URL rewriting guide
- Appendix B: API Reference in the Zope Book
- redirection in Microsoft IIS documentation
- using the
headerfunction in PHP
關於“優質小貼士”
The W3C 優質小貼士 是為網頁開發者和設計者提供的一些有用的小短文,由 W3C 的 Quality Assurance Interest Group 負責管理和輯寫。中文版由 ZDYX(張杜一雄)維護。
雖然這些小貼士都被小組成員認真審查過,但這只是我們向你提供的點滴技巧。請注意,它們 不能 被認為是 W3C 的技術規範。
學習更多的技巧,瞭解怎樣提交你自己的智慧點滴,以及閱讀其他的優質小貼士,盡在 小貼士索引。
