Django исключает один URL-адрес из добавления косой черты

#django #django-urls

#django #django-urls

Вопрос:

Я добавил 2 просмотра в свою конфигурацию Django urls для SEO, но когда я просматриваю их на своем сайте, они перенаправляют их на URL, который я настроил, но с добавленной косой чертой. Я знаю, что Django любит приводить в порядок URL-адреса с помощью косой черты (и мне это нравится), но есть ли способ исключить один URL или несколько URL-адресов из этой функции?

     ...
    url(r'^robots.txt/$', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),

    url(r'^sitemap.xml/$', TemplateView.as_view(template_name='sitemap.xml', content_type='text/xml')),
    ...
  

Они добавляют косую черту к URL-адресам, что приводит к robots.txt/ и sitemap.xml/ не robots.txt и sitemap.xml

Комментарии:

1. Глядя на источник CommonMiddleware:should_redirect_with_slash если ваш URL без косой черты будет допустимым, он не должен перенаправлять на URL с косой чертой — вы пытались удалить косую черту перед $ ?

Ответ №1:

Если вы не хотите использовать косые черты в конце robots.txt и sitemap.xml , то просто удалите конечные косые черты из этих регулярных выражений.

 url(r'^robots.txt$', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),
url(r'^sitemap.xml$', TemplateView.as_view(template_name='sitemap.xml', content_type='text/xml')),
  

Затем URL-адреса /robots.txt и /sitemap.xml будут совпадать, и Django не будет добавлять косую черту.

Комментарии:

1. Не знаю, как я это пропустил. Спасибо, что сохранили мое здравомыслие!