将旧的PHP链接重定向到Django的网址
问题描述:
我得到了很多搜索引擎推荐链接,用于我以前的PHP开发网站,现在已经迁移到Django。我做了一个URL重定向旧的PHP链接像search.php?name=john+smith
为我的Django搜索URL相同的看法如下所示:将旧的PHP链接重定向到Django的网址
urls.py
url(r'^search.php/$', profile_search, name='search'),
url(r'^search/$', profile_search, name='search'),
将谷歌最终更新这些老环节,如果我通过重定向urls.py还是我需要做一个301重定向?如果是的话,我会如何与django和nginx做到这一点?
答
我会做到这一点,在nginx的水平 - 这比Django的处理很有效。假设Django的观点预计,相同的查询参数,你可以在你的nginx server
块做到这一点:
location = /search.php {
return 301 http://$server_name/search/$is_args$args;
}
这将重定向search.php
所有请求/search/
,保留任何查询参数。
301响应绝对是正确的方法 - 您不希望在不同的URL上提供重复的内容。
答
除非在您的profile_search
方法中有HttpResponseRedirect,否则您实际上没有任何类型的重定向。但是,你真的想用什么HttpResponsePermanentRedirect
def profile_search(request):
return HttpResponsePermanentRedirect('/somether/url/?based_on_request_params')