【问题标题】:Redirecting old PHP links to Django urls将旧的 PHP 链接重定向到 Django url
【发布时间】:2016-11-30 23:37:57
【问题描述】:

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

urls.py

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 2018-10-11
        • 2019-11-06
        • 1970-01-01
        相关资源
        最近更新 更多