2013-09-29 29 views
5

好了,如果你去這裏的單證: https://docs.djangoproject.com/en/dev/topics/http/shortcuts/django:臨時重定向和永久重定向有什麼區別?

和向下滾動看重定向的最後一個例子(),它說 「默認情況下,重定向()返回一個臨時重定向上述所有。表單接受永久參數;如果設置爲True,則將返回永久重定向:「

現在,臨時重定向和永久重定向之間有什麼區別?我正在使用它,以便在用戶登錄並進行身份驗證時,將其重定向到登錄頁面。我應該使用HttpResponseRedirect()嗎?它是否給予使用redirect()而不是HttpResponseRedirect()的好處?

+1

IT不是django,而是標準的HTTP術語:http://webdesign.about.com/od/http/qt/tip301v302redir.htm – karthikr

+0

哦,完美,謝謝..但呃,是HttpResponseRedirect永久或臨時重定向? – user2817200

+0

暫時的,沒有參數'permanent = True' – karthikr

回答

3

有兩種方法返回一個301永久重定向:

from django.shortcuts import redirect 

def my_view(request): 
    # some code here 
    return redirect('/some/url/', permanent=True) 

https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/#redirect

或:

from django.http import HttpResponsePermanentRedirect 

    def my_view(request): 
     # some code here 
     return HttpResponsePermanentRedirect('/some/url') 

https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpResponsePermanentRedirect

+0

沒問題,所以在你看來,如果我想在用戶認證後重定向到登錄頁面,我應該使用臨時還是永久的? – user2817200

+1

我會使用臨時重定向。永久重定向適用於資源URL更改時。請參閱:http://en.wikipedia.org/wiki/HTTP_301 – Brandon

+0

啊,好的,謝謝 – user2817200

3

只是增加了一張字條給布蘭登的有關訊息的問題之間有什麼區別兩者都有。臨時重定向與永久重定向之間的主要區別在於第三方如何看待它。 如果Google看到永久重定向,它可能會認爲舊網站已不存在,並會更新所有匹配以直接訪問新網址。有人說谷歌贊成永久重定向,因爲垃圾郵件發送者經常使用臨時重定向。

臨時重定向的情況例如是內部重寫您自己網站上鍊接到下載鏡像/靜態文件服務器的URL。在這種情況下,重定向站點可能保持不變,而其他服務器地址可能會發生變化(例如,主機靜態內容在任何地方最便宜)。使用永久性重定向可能會引入問題(考慮手機上的播客可以記住重定向,當您移動靜態文件服務器時不會識別它)。