Как предоставить канонический URL с помощью Django HttpResponseRedirect?

этот вопрос очень похож на тот, который я только что задал href: могу ли я получить результаты поиска Google для использования/отображения окончательного url-адреса перенаправления?, но теперь вопрос специфичен для Django.

мой сайт имеет URL-адреса веб-страниц, которые используют следующий формат:

www.mysite.com/id/pretty_title

первая страница ссылается на эти страницы, но href фактически содержит некоторые параметры:

 www.mysite.com/id/?some_ugly_parameters_to_let_me_know_what_search_it_is_from

Это затем перенаправляет на

www.mysite.com/id/pretty_title

что показывает страница.

моя проблема в том, что Результаты поиска Google показывают ссылку на страницу как уродливый url вместо довольно перенаправленного.

Я узнал, что мне нужно предоставить каноническую ссылку. Но как я могу это сделать, когда уродливая страница url никогда не существует, по крайней мере, не как та, которую я написал?

что происходит на стороне сервера, так это то, что вид уродливого url делает перенаправление:

return HttpResponseRedirect(pretty_url)

2 ответов


вы можете просто поместить его как часть HTML, возвращенного из шаблона Django, в . У вас есть base.html в Джанго? Вы можете настроить {% block %} в качестве заполнителя для канонического URL-адреса, а затем установите это значение на каждой отдельной странице, что {% extends base.html %}

базы.HTML-код

<html>
<head>
  <link rel="canonical" href="{% block canonical_url %}{% endblock %}">
</head>
...

Я думаю, что это правильный встроенный тег шаблона, который вы ищете. {{ запрос.build_absolute_uri }}