将旧 PHP 链接重定向到 Django url

Redirecting old PHP links to Django urls

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

urls.py

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

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

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

def profile_search(request):
     return HttpResponsePermanentRedirect('/somether/url/?based_on_request_params')

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

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

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

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