2011-06-16 39 views
1

基本上就是我想要做的是:Django的重定向legazy PHP网址

urlpatterns = patterns('', 
    url(r'^old/site/url.php?someshit=(?P<id>\d+)', 
    'website.views.redirect_php'), 
) 

但我总是得到一个404 ..

我也试图逃跑像这样

urlpatterns = patterns('', 
    url(r'^old/site/url\.php\?someshit\=(?P<id>\d+)', 
    'website.views.redirect_php'), 
) 

没有运气。

任何想法?

回答

4

你在做什么不起作用,因为GET参数不会在字符串中包含的URL配置相匹配。 (请参阅What the URLconf searches against。)

要实现所需的行为,您需要从视图中提取GET参数并根据重定向。

urlpatterns = patterns('', 
    url(r'^old/site/url\.php$', 
     view='website.views.redirect_php', 
     name='redirect_php' 
    ), 
) 

,并在您的视图:

def redirect_php(request): 
    id = request.GET.get("somesheet", None) 
    if id == None: 
     # handle case where "somesheet=?" was not provided 
    else: 
     # handle redirects based on id 
+0

Duh ..对。谢谢 ! – 2011-06-16 17:00:23

0

试试这个:

urlpatterns = patterns('', 
    url(r'^old/site/url\.php?someshit=(?P<id>\d+)$', 
    'website.views.redirect_php', name='redirect_php'), 
) 
+0

即使我更换(θP \ d +)与实际的ID,并在地址栏手动输入ID不工作..。它启动它不匹配任何URL .. – 2011-06-16 15:37:21

+0

嗯。让我看看我能否为你找到解决方案。 – Brandon 2011-06-16 15:38:41

+0

发现问题..请参阅下面的答案。谢谢;) – 2011-06-16 17:08:24