如何通过 https 使用站点地图?

Gra*_*GTO 1 django https

我决定在 Django 1.11.4 中启用 https。

谢谢“让我们加密”。

所以我将所有 http 请求重定向 (301) 到 https。此外,所有非 www(http 或 https)都会重定向 (301) 到https://www

它工作正常,除了我的网址https://www.example.com/sitemap.xml,它目前不起作用,并且自 https 传递以来。

它返回 500 错误代码,我真的不知道为什么。

urls.py

from django.conf.urls import url
from django.contrib.sitemaps.views import sitemap
from example.sitemaps import *
from django.conf import settings



#Pour charger le favicon
media = settings.MEDIA

# Dictionary containing sitemap classes
sitemaps = {
    'products': ArticleSitemap(),

}

urlpatterns = [
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
Run Code Online (Sandbox Code Playgroud)

站点地图.py

#Generating Sitemap for Dynamic Urls

from django.contrib.sitemaps import Sitemap
from wall.models import Articles

class ArticleSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.7

    def items(self):
        return Articles.objects.filter(published=True).order_by('-update')

    def lastmod(self, item): 
        return item.date
Run Code Online (Sandbox Code Playgroud)

设置.py

INSTALLED_APPS = [
    'django.contrib.sites', #SiteMap
    'django.contrib.sitemaps', #SiteMap
Run Code Online (Sandbox Code Playgroud)

它是通过 http 工作的,因此需要进行修改,但我不知道是哪一项。

Ali*_*emi 10

虽然为时已晚,但可能对从谷歌来到这里的开发人员有所帮助。

您可以添加protocol为类变量。

class ArticleSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.7
    protocol = 'https' # <-- ADD THIS

    def items(self):
        ...
Run Code Online (Sandbox Code Playgroud)

另外,在 Django 5+ 中,默认协议https