Django 블로그에 sitemap.xml을 추가하고 Heroku에서 작동하게 만드는 방법(SEO)
먼저 정적 또는 동적 링크로 제공할 항목이 있는지 확인하십시오. 이 예에서는 동적으로 생성된 BlogPosts와 3개의 정적 페이지(Main/Index.html, About.html 및 Contact.html)를 sitemap.xml에 추가합니다. 시작하겠습니다.
먼저 settings.py 파일에 다음을 추가해야 합니다.
# settings.py
INSTALLED_APPS = [
...
'django.contrib.sitemaps',
'django.contrib.sites',
]
SITE_ID = 1
그런 다음 로컬에서 터미널을 열고 python manage.py 마이그레이션을 실행해야 합니다. 이렇게 하면 사이트 모델이 로컬 데이터베이스에 추가됩니다.
Sites 테이블의 첫 번째 항목(SITE_ID == 1 포함)이 "example.com"인 것을 관찰합니다. 나중에 Heroku로 푸시할 때 프로덕션에서 변경할 것입니다.
이제 MainApp(./manage.py startapp MainApp을 실행할 때 프로젝트 시작 시 생성한 Django 앱)에 ../MainApp/sitemaps.py라는 새 파일을 생성해야 합니다. 여기에 다음을 추가하고 documentation on Django Sitemaps을 참조할 수도 있습니다.
# sitemaps.py
from django.contrib.sitemaps import Sitemap
from django.shortcuts import reverse
from .models import BlogPost
class BlogPostSitemap(Sitemap):
changefreq = "weekly"
def items(self):
return BlogPost.objects.all()
class StaticViewSitemap(Sitemap):
changefreq = 'monthly'
def items(self):
return ['index', 'about', 'contact']
def location(self, item):
return reverse(item)
이제 계속 생성되는 sitemap.xml을 MainApp/urls.py에 추가해야 합니다. 따라서 다음 줄을 추가해야 합니다.
# urls.py
from django.contrib.sitemaps.views import sitemap
from .sitemaps import BlogPostSitemap, StaticViewSitemap
sitemaps = {
'posts': BlogPostSitemap,
'static': StaticViewSitemap,
}
urlpatterns = [
...
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}),
]
좋은. python ./manage.py runserver를 실행하고 http://localhost:8000/sitemap.xml에 액세스하여 sitemap.xml이 로컬 서버에 표시되는지 확인할 수 있습니다.
그리고 끝났습니다! 거의. 이제 고전적인 방식으로 코드를 Heroku로 푸시할 수 있습니다.
> git status
> git add -A
> git commit -m "Add sitemap.xml to Django App"
> git push heroku master
하지만 여기에 문제가 있습니다. 이제 https://myappname.herokuapp.com/sitemap.xml에 액세스하려고 하면 "INTERNAL SERVER ERROR (500)"가 표시됩니다. 또한 관리 페이지에서 사이트 모델에 액세스하려고 하면 동일한 오류가 발생합니다.
그런데 왜 그럴까요?
코드를 Heroku로 푸시할 때 Heroku 서버는 manage.py에서 "makemigrations"명령을 호출하지만 models.py 파일에 수동으로 생성(코드 작성)하지 않았기 때문에 makemigrations는 "변경 사항이 감지되지 않았습니다. "이므로 "migrate"명령을 실행하지 않습니다.
따라서 heroku 서버에서 마이그레이션 명령을 수동으로 실행해야 합니다. 이를 위해 터미널에서 django 프로젝트 폴더에 있는 다음 명령을 호출하기만 하면 됩니다.
> heroku run bash
$ python manage.py migrate
그리고 그게 다야. 하지만 이제 heroku 배포 앱에서 관리 페이지에 다시 액세스하고 Sites 모델의 첫 번째 항목을 "example.com"에서 "myappname.herokuapp.com"으로 변경해야 합니다. 그럼, 우리는 실행해야합니다
> heroku restart
이제 정말 끝났습니다. myappname.herokuapp.com/sitemap.xml에서 사이트맵에 액세스할 수 있습니다.
이 미니 튜토리얼이 언젠가 누군가에게 도움이 되기를 바랍니다. 이 문제가 다시 발생하면 다시는 어려움을 겪지 않는 데 확실히 도움이 될 것입니다.
행복한 코딩,
R.B.
Reference
이 문제에 관하여(Django 블로그에 sitemap.xml을 추가하고 Heroku에서 작동하게 만드는 방법(SEO)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/radualexandrub/how-to-add-sitemap-xml-to-your-django-blog-and-make-it-work-on-heroku-4o11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)