2011-12-13 54 views
0

我準備將舊的經典ASP站點移動到新的Django系統。作爲舉措的一部分,我們必須設置一些舊的URL來指向新的URL。Django URLConf奇怪字符重定向

例如, http://www.domainname.com/category.asp?categoryid=105應該301 http://www.domainname.com/some-category/

也許我正則表達式是不是有點傻,但是在這個例子中,我包括在我的URLconf這樣的: (r'^asp/category\.asp\?categoryid=105$', redirect_to, {'url': '/some-category/'}),

我的想法是,我不得不逃避.?,但由於某些原因,當我去測試它時,它不會重定向到/some-category/,它只是輸入404的URL。

我做錯了嗎?有沒有更好的辦法?

回答

2

要詳細說明Daniel Roseman's answer,查詢字符串不是URL的一部分,所以您可能需要編寫一個視圖函數,該函數將從查詢字符串中獲取類別並進行適當的重定向。你可以有一個像網址:

(r'^category\.asp', category_redirect), 

像一個視圖功能:(改爲自己的口味和需求,當然)

def category_redirect(request): 
    if 'categoryid' not in request.GET: 
     raise Http404 
    cat_id = request.GET['category'] 
    try: 
     cat = Category.objects.get(old_id=cat_id) 
    except Category.DoesNotExist: 
     raise Http404 
    else: 
     return HttpResponsePermanentRedirect('/%s/' % cat.slug) 

+0

就像一個魅力。謝謝! – JEEND0 2011-12-13 20:04:23

0

?之後的所有內容都不是URL的一部分。它是GET參數的一部分。