将旧的PHP链接重定向到Django URL

时间:2016-07-27 05:59:58

标签: django redirect nginx http-status-code-301

我为以前的PHP开发网站获得了很多搜索引擎推荐链接,现在已经迁移到Django。我将像search.php?name=john+smith这样的旧php链接重定向到我的django搜索网址的相同视图,如下所示:

urls.py

url(r'^search.php/$', profile_search, name='search'),
url(r'^search/$', profile_search, name='search'),

如果我通过urls.py重定向,Google是否会最终更新这些旧链接,还是需要进行301重定向?如果是这样,我将如何使用django和nginx?

2 个答案:

答案 0 :(得分:3)

我会在nginx级别执行此操作 - 这比让Django处理它更有效。假设Django视图需要相同的查询参数,您可以在nginx server块中执行此操作:

location = /search.php { 
    return 301 http://$server_name/search/$is_args$args; 
}

这会将search.php的所有请求重定向到/search/,从而保留所有查询参数。

301响应绝对是正确的方法 - 您不希望在不同的URL上提供重复的内容。

答案 1 :(得分:1)

除非你的profile_search方法中有HttpResponseRedirect,否则你实际上并没有任何重定向。但你真正想要使用的是HttpResponsePermanentRedirect

def profile_search(request):
     return HttpResponsePermanentRedirect('/somether/url/?based_on_request_params')
相关问题