1. 네이버 서치어드바이저 적용

2. ADMIN버튼 제거
This commit is contained in:
CSKIM
2026-05-08 17:53:35 +09:00
parent ec50a60a31
commit 7d5f4582fa
10 changed files with 80 additions and 9 deletions
@@ -23,6 +23,8 @@ public class IotdoorProperties {
public static class Site {
private String name;
private String url;
private String ogImage;
private String adminTitle;
private String email;
private String phone;
@@ -42,6 +44,22 @@ public class IotdoorProperties {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getOgImage() {
return ogImage;
}
public void setOgImage(String ogImage) {
this.ogImage = ogImage;
}
public String getAdminTitle() {
return adminTitle;
}
@@ -18,6 +18,8 @@ public class SecurityConfig {
.requestMatchers(
"/",
"/index.do",
"/robots.txt",
"/sitemap.xml",
"/portfolio.do",
"/portfolio/**",
"/contact.do",
@@ -2,6 +2,7 @@ package kr.iotdoor.boot.web;
import kr.iotdoor.boot.config.IotdoorProperties;
import kr.iotdoor.boot.model.user.AdminUserPrincipal;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
@@ -29,6 +30,11 @@ public class GlobalViewModelAdvice {
return List.of();
}
@ModelAttribute("canonicalUrl")
public String canonicalUrl(HttpServletRequest request) {
return request.getRequestURL().toString();
}
@ModelAttribute("subMainClass")
public String subMainClass() {
return "";
@@ -28,12 +28,16 @@ public class PublicPageController {
}
@GetMapping("/contact.do")
public String contact() {
public String contact(Model model) {
model.addAttribute("pageTitle", "문의하기");
model.addAttribute("pageDescription", "국제오토텍 자동문, 산업용자동문, 내풍압셔터, 오버헤드도어 시공 및 A/S 상담을 접수합니다.");
return "kr/iotdoor/cmty/contact/contact";
}
@GetMapping("/portfolio.do")
public String portfolio(Model model) {
model.addAttribute("pageTitle", "시공 사례");
model.addAttribute("pageDescription", "국제오토텍의 자동문, 산업용자동문, 내풍압셔터, 오버헤드도어 시공 사례와 제품 포트폴리오를 확인하세요.");
model.addAttribute("portfolioItems", portfolioService.getPortfolioItems());
return "kr/iotdoor/cmty/portfolio/portfolio";
}
@@ -48,6 +52,8 @@ public class PublicPageController {
);
}
model.addAttribute("pageTitle", portfolio.getTitle());
model.addAttribute("pageDescription", portfolio.getSummary());
model.addAttribute("portfolio", portfolio);
model.addAttribute("portfolioCount", portfolioService.count());
return "kr/iotdoor/cmty/portfolio/detail";
+2
View File
@@ -62,6 +62,8 @@ mybatis:
iotdoor:
site:
name: 국제오토텍
url: https://iotdoor.kr
og-image: https://iotdoor.kr/resources/kr/iotdoor/comn/site/layout/image/template/logo.jpg
admin-title: 국제오토텍 관리자
email: iotdoor1749@naver.com
phone: 042-585-1749
+4
View File
@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://iotdoor.kr/sitemap.xml
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://iotdoor.kr/</loc>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://iotdoor.kr/portfolio.do</loc>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://iotdoor.kr/contact.do</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
@@ -61,7 +61,6 @@
<!-- <a href="/" class="nav-item nav-link">About</a> -->
<a href="/portfolio.do" class="nav-item nav-link">Portfolio</a>
<a href="/contact.do" class="nav-item nav-link">Contact</a>
<a href="/mfuc/index.do" class="nav-item nav-link">ADMIN</a>
</div>
<!--<a href="" class="btn btn-primary rounded-0 py-4 px-lg-5 d-none d-lg-block">Get A Quote<i class="fa fa-arrow-right ms-3"></i></a>-->
</div>
@@ -7,13 +7,14 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="">
<meta property="og:title" content="">
<meta property="og:description" content="">
<meta property="og:url" content="">
<meta name="description" th:content="${pageDescription != null ? pageDescription : siteInfo.description}" content="슬라이딩자동문, 산업용자동문, 내풍압셔터, 오버헤드도어를 중심으로 시공과 유지보수를 제공합니다.">
<meta property="og:title" th:content="${pageTitle != null ? pageTitle + ' | ' + siteInfo.name : siteInfo.name}" content="국제오토텍">
<meta property="og:description" th:content="${pageDescription != null ? pageDescription : siteInfo.description}" content="슬라이딩자동문, 산업용자동문, 내풍압셔터, 오버헤드도어를 중심으로 시공과 유지보수를 제공합니다.">
<meta property="og:url" th:content="${canonicalUrl != null ? canonicalUrl : siteInfo.url}" content="https://iotdoor.kr">
<meta property="og:type" content="website">
<meta property="og:image" content="">
<title th:text="${siteInfo.name}">국제오토텍</title>
<meta property="og:image" th:content="${siteInfo.ogImage}" content="https://iotdoor.kr/resources/kr/iotdoor/comn/site/layout/image/template/logo.jpg">
<link rel="canonical" th:href="${canonicalUrl != null ? canonicalUrl : siteInfo.url}" href="https://iotdoor.kr">
<title th:text="${pageTitle != null ? pageTitle + ' | ' + siteInfo.name : siteInfo.name}">국제오토텍</title>
<!-- Favicon -->
<link href="/resources/kr/iotdoor/comn/site/layout/image/template/favicon.ico" rel="icon" />
@@ -22,7 +22,22 @@ class PublicPageControllerTest {
void homePageRendersFully() throws Exception {
mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(content().string(org.hamcrest.Matchers.containsString("Footer Start")));
.andExpect(content().string(org.hamcrest.Matchers.containsString("Footer Start")))
.andExpect(content().string(org.hamcrest.Matchers.containsString("name=\"description\"")))
.andExpect(content().string(org.hamcrest.Matchers.containsString("property=\"og:title\"")))
.andExpect(content().string(org.hamcrest.Matchers.containsString("property=\"og:description\"")));
}
@Test
void searchEngineFilesArePublic() throws Exception {
mockMvc.perform(get("/robots.txt"))
.andExpect(status().isOk())
.andExpect(content().string(org.hamcrest.Matchers.containsString("User-agent: *")))
.andExpect(content().string(org.hamcrest.Matchers.containsString("Sitemap: https://iotdoor.kr/sitemap.xml")));
mockMvc.perform(get("/sitemap.xml"))
.andExpect(status().isOk())
.andExpect(content().string(org.hamcrest.Matchers.containsString("https://iotdoor.kr/portfolio.do")));
}
@Test