이름:
메일:
가입일:
2022-06-17 12:38조회수: 1545[운영자]영이
검색엔진 최적화를 위해
구글 서치콘솔에 sitemap.xml을 제출했다.
이 포트폴리오 겸 블로그는
글이 계속 포스팅 되기 때문에
일일히 수동으로 sitemap.xml을 업데이트 해줘야한다는 귀찮음이 있었다.
하지만 PHP라는 백엔드 언어를 사용하면서
이런걸 수동으로 하고 있는 내 자신이 너무 안타까워서
자동으로 제작해보기로 했다.
일반적으로 xml파일은 최상단에 xml 버전을 명시해주고
(마치 !DOCTYPE html처럼)
그 아래에 xml 태그들을 넣게 된다.
내가 올리는 게시글들을 자동으로 업데이트 해주기 위해서는,
php에서 while 반복문을 돌리며
DB에 존재하는 모든 '공개' 게시글을 xml 태그로 변환해주는 작업이 필요했다.
<?xml version="1.0" encoding="utf-8"?><!--Generated by Screaming Frog SEO Spider 16.7-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.gloomy-store.com/</loc>
<lastmod>2022-06-07</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php
//데이터베이스 파일 include
include $_SERVER['DOCUMENT_ROOT']."/connect/db.php";
// document라는 테이블에서 public 컬럼이 'PUBLIC'으로 되어있는 row를 전부 골라내서 날짜순으로 역순정렬
$sql = "SELECT * FROM document WHERE public='PUBLIC' ORDER BY regdate DESC";
// 쿼리 작동!
$sql_get = mysqli_query($dbConn, $sql);
// while문으로 row가 끝번째 index의 row에 닿을때까지 실행
while($row = mysqli_fetch_array($sql_get)){
// 게시판종류번호 + 게시글번호를 조합해서 url 생성
$url = "https://www.gloomy-store.com/board/board.php?module_srl=".$row['module']."&document_srl=".$row['document']."&view_all=1";
//날짜는 db상에 20220625131005 형태로 적혀있으나, 이를 split으로 나눈 뒤 조합
$date = substr( $row['regdate'], 0, 4 )."-".substr( $row['regdate'], 4, 2 )."-".substr( $row['regdate'], 6, 2 );
// 변경주기는 매일로 설정, 이외에 weekly monthly 등 있음
$changefreq = 'daily';
// 중요도인데, 이는 보통 문서의 depth에 따라 결정하는듯함
$priority = 0.8;
?>
<url>
<loc><?=$url?></loc>
<lastmod><?=$date?></lastmod>
<changefreq><?=$changefreq?></changefreq>
<priority><?=$priority?></priority>
</url>
<?php } ?>
</urlset>
처음에는 이런식으로,
반복문을 돌려서 html 태그를 생성하듯이 진행했는데
실패했다.
실제로 https://www.gloomy-store.com/sitemap.php 접속하니
글자만 나열되어있고,
브라우저가 xml문서로 인식하지 않았다.
분명히 최상단에 xml 문서임을 명시했는데...?
구글링해보니
이러한 형태의 xml은
아예 echo로 내뱉어줘야 정상적으로 xml문서임을 인식시킬 수 있었다.
<?php
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8" ?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.gloomy-store.com/</loc>
<lastmod>2022-06-07</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>';
include $_SERVER['DOCUMENT_ROOT']."/connect/db.php";
$sql = "SELECT * FROM document WHERE public='PUBLIC' ORDER BY regdate DESC";
$sql_get = mysqli_query($dbConn, $sql);
while($row = mysqli_fetch_array($sql_get)){
$url = "https://www.gloomy-store.com/board/board.php?module_srl=".$row['module']."&document_srl=".$row['document']."&view_all=1";
$date = substr( $row['regdate'], 0, 4 )."-".substr( $row['regdate'], 4, 2 )."-".substr( $row['regdate'], 6, 2 );
$changefreq = 'daily';
$priority = 0.8;
echo "<url>
<loc>$url</loc>
<lastmod>$date</lastmod>
<changefreq>$changefreq</changefreq>
<priority>$priority</priority>
</url>";}
echo "</urlset>";
?>
총 코드를 정리하자면 이렇다.
아예 모든 부분을 echo로 출력해야한다.
그렇다면 실제로
https://www.gloomy-store.com/sitemap.php 에 접속을 해보자.
xml 형식으로 아주 잘 출력되며,
구글 서치콘솔에도 정상적으로 등록 되었다.
사이트맵은 굳이 xml 확장자로 업로드하지 않아도
문서를 읽었을 때 문서 내용이 xml이라는 것만 인식시켜주면 되기 때문에
php 파일로 만들어도 크게 상관이 없는 듯 하다.
이렇게 sitemap.php를 제작해두면
내가 게시글을 업데이트 할 때마다
db에서 내용을 읽어와서 자동으로 사이트맵을 갱신해준다.
심지어 이 포스팅의 url도
자동으로 xml에 업데이트 된다.
이상 php를 이용한 사이트맵 자동 업데이트 끝~~!
자바스크립트 배열 고차함수 직접 구현하기(map, reduce, filter, forEach, sort) 프론트엔드 코딩테스트
Array.prototype.customMap = function(callback, thisArg) { const newArr = []; for (let i = 0; i...
순수 Javascript로 fade in 구현하기
순수 Javascript로 fade in 구현하기!HTMLElement.prototype.fadeIn = function(interval){ if(!this.class...
PHP로 사이트맵 자동 업데이트하기 (sitemap.xml)
검색엔진 최적화를 위해 구글 서치콘솔에 sitemap.xml을 제출했다.이 포트폴리오 겸 블로그는 글이 계속 포스팅 되기 때문에 일일히 수동으로 sitemap.xml을 업데이트 해줘야한다는 귀찮음이 있었다.하지만 PHP라는 백엔드 언어를 사용하면서 이런걸 수동으로 하고 있는 내 자신이 너무 안타까워서 자동으로 제작해보기로 했다.일반적으로 xml파일은 최상단에 xml 버전을 명시해주고
HTML 페이지가 두 번 로딩되면서 로딩 속도가 느려질때 (Network waterfall twice times download)
현재 포트폴리오용 웹사이트 개발을 하던 나는 내 웹사이트가 뭔가 이상하다는 것을 발견했다.크롬의 개발자도구(F12)에서 Network 탭을 보면 내 웹사이트에서 ...
코드를 강조해서 보여주는 highlight.js
코드를 강조해서 보여주는 highlight.js 테스트입니다.<!-- highlight.js --> <link rel="stylesheet" type="text...
댓글: 3
2022-07-21 20:29
2023-01-06 09:49
2023-04-18 17:12
/