2016-07-27 3 views
0

Я получаю много ссылок на поисковую систему для моего предыдущего PHP-сайта, который теперь перенесен на Django. Я сделал URL перенаправления для старых PHP ссылки как search.php?name=john+smith в ту же точку зрения для моего поиска Джанго URL, как показано здесь:Перенаправление старых ссылок PHP на Django url

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

Будет ли Google в конечном итоге обновить старые ссылки, если перенаправить через urls.py или мне нужно сделать 301 переадресацию? Если да, то как мне это сделать с django и nginx?

ответ

3

Я хотел бы сделать это на уровне Nginx - это гораздо более эффективно, чем с Django справиться с этим. Если предположить, что представление Django ожидает одни и те же аргументы запроса, вы можете сделать это в Nginx server блока:

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

Это будет перенаправлять все запросы на search.php к /search/, сохраняя какие-либо аргументы запроса.

Ответ 301 определенно правильный подход - вы не хотите использовать дублированный контент на разных URL-адресах.

1

Если у вас нет HttpResponseRedirect в вашем методе profile_search, у вас на самом деле нет никакого перенаправления здесь. Но то, что вы действительно хотите использовать HttpResponsePermanentRedirect

def profile_search(request): 
    return HttpResponsePermanentRedirect('/somether/url/?based_on_request_params') 
Смежные вопросы