我为以前的PHP开发网站获得了很多搜索引擎推荐链接,现在已经迁移到Django。我将像search.php?name=john+smith
这样的旧php链接重定向到我的django搜索网址的相同视图,如下所示:
url(r'^search.php/$', profile_search, name='search'),
url(r'^search/$', profile_search, name='search'),
如果我通过urls.py重定向,Google是否会最终更新这些旧链接,还是需要进行301重定向?如果是这样,我将如何使用django和nginx?
答案 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')