New GV Auto Collision site: hero CTA, trust signals, before/after gallery, services, estimate form, Schema.org AutoRepair, SEO
No files matched your search
@@ -2,7 +2,7 @@ import { defineConfig } from 'astro/config';
|
||||
import sitemap from '@astrojs/sitemap';
|
||||
|
||||
export default defineConfig({
|
||||
site: 'https://izhs-dom.ru',
|
||||
site: 'https://www.gvautocollision.com',
|
||||
output: 'static',
|
||||
integrations: [sitemap()],
|
||||
image: {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "izhs-dom",
|
||||
"name": "gv-autocollision",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
|
||||
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 203 KiB |
@@ -2,6 +2,6 @@ User-agent: *
|
||||
Allow: /
|
||||
Disallow: /cdn-cgi/
|
||||
|
||||
Sitemap: https://izhs-dom.ru/sitemap-index.xml
|
||||
Sitemap: https://www.gvautocollision.com/sitemap.xml
|
||||
|
||||
Host: izhs-dom.ru
|
||||
Host: www.gvautocollision.com
|
||||
@@ -14,9 +14,9 @@ const {
|
||||
ogType = 'article',
|
||||
} = Astro.props;
|
||||
|
||||
const baseUrl = 'https://izhs-dom.ru';
|
||||
const baseUrl = 'https://www.gvautocollision.com';
|
||||
const pageUrl = slug ? `${baseUrl}/blog/${slug}/` : baseUrl;
|
||||
const ogImage = image || `${baseUrl}/og-image.svg`;
|
||||
const ogImage = image || `${baseUrl}/images/logo.png`;
|
||||
|
||||
const articleSchema = slug ? JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
@@ -26,44 +26,70 @@ const articleSchema = slug ? JSON.stringify({
|
||||
"datePublished": date || new Date().toISOString().split('T')[0],
|
||||
"image": image || undefined,
|
||||
"url": `${baseUrl}/blog/${slug}/`,
|
||||
"author": { "@type": "Organization", "name": "ИЖС Дом" },
|
||||
"publisher": { "@type": "Organization", "name": "ИЖС Дом" }
|
||||
"author": { "@type": "Organization", "name": "GV Auto Collision" },
|
||||
"publisher": { "@type": "Organization", "name": "GV Auto Collision" }
|
||||
}) : '';
|
||||
|
||||
const breadcrumb = slug ? JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{ "@type": "ListItem", "position": 1, "name": "Главная", "item": baseUrl },
|
||||
{ "@type": "ListItem", "position": 2, "name": "Статьи", "item": `${baseUrl}/blog/` },
|
||||
{ "@type": "ListItem", "position": 1, "name": "Home", "item": baseUrl },
|
||||
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": `${baseUrl}/blog/` },
|
||||
{ "@type": "ListItem", "position": 3, "name": title, "item": `${baseUrl}/blog/${slug}/` }
|
||||
]
|
||||
}) : '';
|
||||
|
||||
const orgSchema = JSON.stringify({
|
||||
const localBusinessSchema = JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "ИЖС Дом",
|
||||
"@type": "AutoRepair",
|
||||
"name": "GV Auto Collision",
|
||||
"description": "Professional collision repair in Los Angeles. Free towing, OEM parts, written warranty.",
|
||||
"url": baseUrl,
|
||||
"description": "Строительство индивидуальных жилых домов в Уфе",
|
||||
"sameAs": [
|
||||
"https://ru.wikipedia.org/wiki/Индивидуальное_жилищное_строительство",
|
||||
"https://www.wikidata.org/wiki/Q4202048",
|
||||
"https://yandex.ru/profile/izhs-dom-ufa",
|
||||
"telephone": "+13106546484",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "794 Merchant St Unit 3",
|
||||
"addressLocality": "Los Angeles",
|
||||
"addressRegion": "CA",
|
||||
"postalCode": "90021",
|
||||
"addressCountry": "US"
|
||||
},
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": 34.04,
|
||||
"longitude": -118.23
|
||||
},
|
||||
"openingHoursSpecification": [
|
||||
{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], "opens": "08:00", "closes": "18:00" }
|
||||
],
|
||||
"priceRange": "$$",
|
||||
"image": `${baseUrl}/images/hero-repair.jpg`,
|
||||
"sameAs": [],
|
||||
"hasOfferCatalog": {
|
||||
"@type": "OfferCatalog",
|
||||
"name": "Collision Repair Services",
|
||||
"itemListElement": [
|
||||
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Collision Repair" } },
|
||||
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Paintless Dent Repair" } },
|
||||
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Frame Straightening" } },
|
||||
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "ADAS Calibration" } },
|
||||
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Tesla & EV Repair" } }
|
||||
]
|
||||
}
|
||||
});
|
||||
---
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{title}</title>
|
||||
<meta name="description" content={description}>
|
||||
<link rel="canonical" href={pageUrl}>
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<link rel="icon" type="image/png" href="/images/logo.png">
|
||||
|
||||
<!-- Pagefind search (файлы генерируются при pagefind --site dist после сборки) -->
|
||||
<!-- Pagefind search -->
|
||||
<link href="/pagefind/pagefind-ui.css" rel="stylesheet" is:inline>
|
||||
<script src="/pagefind/pagefind-ui.js" is:inline></script>
|
||||
|
||||
@@ -73,67 +99,359 @@ const orgSchema = JSON.stringify({
|
||||
<meta property="og:description" content={description}>
|
||||
<meta property="og:url" content={pageUrl}>
|
||||
<meta property="og:image" content={ogImage}>
|
||||
<meta property="og:site_name" content="ИЖС Дом">
|
||||
<meta property="og:locale" content="ru_RU">
|
||||
<meta property="og:site_name" content="GV Auto Collision">
|
||||
<meta property="og:locale" content="en_US">
|
||||
|
||||
<!-- Twitter -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content={title}>
|
||||
<meta name="twitter:description" content={description}>
|
||||
|
||||
<!-- CSP: Content Security Policy -->
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; script-src 'self' http://192.168.1.225:3000 https://cloud.umami.is 'unsafe-inline'; connect-src 'self' http://192.168.1.225:3000 https://cloud.umami.is">
|
||||
|
||||
<!-- Приватная аналитика (Umami Cloud — без cookie, бесплатно до 100K просмотров/мес) -->
|
||||
<!-- Self-hosted: см. umami/docker-compose.yml (требуется Docker не-snap) -->
|
||||
<script defer src="https://cloud.umami.is/script.js" data-website-id="5ab621f0-aa9b-4d9c-a928-ba2f970c006c"></script>
|
||||
|
||||
<!-- Schema.org JSON-LD -->
|
||||
{articleSchema && <script type="application/ld+json" set:html={articleSchema}></script>}
|
||||
{breadcrumb && <script type="application/ld+json" set:html={breadcrumb}></script>}
|
||||
<script type="application/ld+json" set:html={orgSchema}></script>
|
||||
<script type="application/ld+json" set:html={localBusinessSchema}></script>
|
||||
|
||||
<style>
|
||||
:root{--bg:#f8f9fa;--text:#1a1a2e;--accent:#2d6a4f;--card:#fff;--radius:8px}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.7}
|
||||
.container{max-width:800px;margin:0 auto;padding:20px}
|
||||
header{padding:20px 0;border-bottom:2px solid var(--accent)}
|
||||
nav a{margin-right:16px;color:var(--accent);text-decoration:none;font-weight:600}
|
||||
article{margin:32px 0;padding:24px;background:var(--card);border-radius:var(--radius);box-shadow:0 1px 3px rgba(0,0,0,.05)}
|
||||
article h1{font-size:28px;margin-bottom:12px}
|
||||
article h2{font-size:20px;margin:24px 0 12px}
|
||||
article p{margin:8px 0}
|
||||
article ul,article ol{margin:8px 0;padding-left:24px}
|
||||
article strong{color:var(--accent)}
|
||||
.related{margin-top:32px;padding:16px;background:var(--card);border-radius:var(--radius)}
|
||||
.related a{display:block;padding:4px 0;color:var(--accent)}
|
||||
footer{text-align:center;padding:32px 0;color:#888;font-size:14px}
|
||||
/* Поиск */
|
||||
.search-bar{max-width:300px;margin-left:auto}
|
||||
.search-bar input{padding:6px 12px;border:1px solid #ddd;border-radius:6px;width:100%;font-size:14px}
|
||||
.pagefind-ui__results{position:absolute;background:var(--card);border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:100;margin-top:4px;max-height:400px;overflow-y:auto;width:300px}
|
||||
.pagefind-ui__result{padding:8px 12px;border-bottom:1px solid #eee}
|
||||
.pagefind-ui__result:last-child{border:none}
|
||||
.pagefind-ui__result a{color:var(--accent);font-weight:600;text-decoration:none}
|
||||
.pagefind-ui__result p{font-size:12px;color:#666;margin:2px 0}
|
||||
.pagefind-ui__drawer{display:none !important}
|
||||
:root {
|
||||
--bg: #0a0a0a;
|
||||
--bg-light: #141414;
|
||||
--text: #f0f0f0;
|
||||
--text-muted: #999;
|
||||
--accent: #c8102e;
|
||||
--accent-hover: #a00d24;
|
||||
--card: #1a1a1a;
|
||||
--radius: 12px;
|
||||
--shadow: 0 4px 20px rgba(0,0,0,0.3);
|
||||
}
|
||||
* { margin:0; padding:0; box-sizing:border-box; }
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
line-height: 1.7;
|
||||
}
|
||||
a { color: var(--accent); text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
|
||||
/* Header */
|
||||
header {
|
||||
background: var(--bg-light);
|
||||
border-bottom: 1px solid #222;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
.header-inner {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 12px 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-weight: 700;
|
||||
font-size: 18px;
|
||||
color: var(--text);
|
||||
text-decoration: none;
|
||||
}
|
||||
.logo img { height: 40px; }
|
||||
nav { display: flex; align-items: center; gap: 20px; }
|
||||
nav a { color: var(--text-muted); font-weight: 500; font-size: 14px; transition: color 0.2s; }
|
||||
nav a:hover { color: var(--text); text-decoration: none; }
|
||||
.nav-cta {
|
||||
background: var(--accent);
|
||||
color: #fff !important;
|
||||
padding: 8px 16px;
|
||||
border-radius: 6px;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
}
|
||||
.nav-cta:hover { background: var(--accent-hover); text-decoration: none; }
|
||||
.nav-phone { color: var(--text) !important; font-weight: 600; }
|
||||
|
||||
/* Hero */
|
||||
.hero {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 60px 24px;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 48px;
|
||||
align-items: center;
|
||||
}
|
||||
.hero h1 {
|
||||
font-size: 42px;
|
||||
line-height: 1.15;
|
||||
margin-bottom: 16px;
|
||||
color: #fff;
|
||||
}
|
||||
.hero-subtitle {
|
||||
font-size: 18px;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.hero-cta { display: flex; gap: 12px; margin-bottom: 24px; }
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 28px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
text-decoration: none;
|
||||
transition: all 0.2s;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
}
|
||||
.btn-primary { background: var(--accent); color: #fff; }
|
||||
.btn-primary:hover { background: var(--accent-hover); text-decoration: none; transform: translateY(-1px); }
|
||||
.btn-secondary { background: transparent; color: var(--text); border: 2px solid #444; }
|
||||
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }
|
||||
.btn-full { width: 100%; text-align: center; }
|
||||
.trust-badges { display: flex; gap: 12px; flex-wrap: wrap; }
|
||||
.badge {
|
||||
background: var(--bg-light);
|
||||
padding: 6px 14px;
|
||||
border-radius: 20px;
|
||||
font-size: 13px;
|
||||
color: var(--text-muted);
|
||||
border: 1px solid #333;
|
||||
}
|
||||
.hero-image img {
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
object-fit: cover;
|
||||
border-radius: var(--radius);
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
/* Sections */
|
||||
section {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 60px 24px;
|
||||
}
|
||||
section h2 {
|
||||
font-size: 32px;
|
||||
margin-bottom: 12px;
|
||||
color: #fff;
|
||||
}
|
||||
.section-subtitle {
|
||||
color: var(--text-muted);
|
||||
font-size: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
/* Trust Grid */
|
||||
.trust-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
.trust-card {
|
||||
background: var(--card);
|
||||
padding: 24px;
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid #222;
|
||||
}
|
||||
.trust-icon { font-size: 32px; margin-bottom: 12px; }
|
||||
.trust-card h3 { font-size: 18px; margin-bottom: 8px; color: #fff; }
|
||||
.trust-card p { font-size: 14px; color: var(--text-muted); }
|
||||
|
||||
/* Process */
|
||||
.process-steps {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||
gap: 24px;
|
||||
}
|
||||
.step {
|
||||
text-align: center;
|
||||
padding: 24px;
|
||||
}
|
||||
.step-number {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
background: var(--accent);
|
||||
color: #fff;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
margin: 0 auto 16px;
|
||||
}
|
||||
.step h3 { font-size: 18px; margin-bottom: 8px; color: #fff; }
|
||||
.step p { font-size: 14px; color: var(--text-muted); }
|
||||
|
||||
/* Gallery */
|
||||
.gallery-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
.gallery-item {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 8px;
|
||||
}
|
||||
.gallery-before, .gallery-after {
|
||||
position: relative;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.gallery-before img, .gallery-after img {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
object-fit: cover;
|
||||
}
|
||||
.gallery-label {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
left: 8px;
|
||||
background: rgba(0,0,0,0.7);
|
||||
color: #fff;
|
||||
padding: 4px 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Services */
|
||||
.services-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.service-card {
|
||||
background: var(--card);
|
||||
padding: 20px;
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid #222;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.service-card:hover { border-color: var(--accent); }
|
||||
.service-card h3 { font-size: 16px; margin-bottom: 6px; color: #fff; }
|
||||
.service-card p { font-size: 13px; color: var(--text-muted); }
|
||||
|
||||
/* Estimate Form */
|
||||
.estimate-section {
|
||||
background: var(--bg-light);
|
||||
border-radius: var(--radius);
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.estimate-form {
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.form-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 12px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.form-row > *:full-width { grid-column: 1 / -1; }
|
||||
input, textarea {
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
background: var(--card);
|
||||
border: 1px solid #333;
|
||||
border-radius: 8px;
|
||||
color: var(--text);
|
||||
font-size: 14px;
|
||||
font-family: inherit;
|
||||
}
|
||||
input:focus, textarea:focus {
|
||||
outline: none;
|
||||
border-color: var(--accent);
|
||||
}
|
||||
input::placeholder, textarea::placeholder { color: #666; }
|
||||
|
||||
/* Contact */
|
||||
.contact-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 32px;
|
||||
align-items: start;
|
||||
}
|
||||
.contact-info h2 { margin-bottom: 16px; }
|
||||
.address { font-size: 18px; margin-bottom: 12px; line-height: 1.5; }
|
||||
.phone-link { font-size: 24px; font-weight: 700; color: var(--accent); display: block; margin-bottom: 12px; }
|
||||
.hours { color: var(--text-muted); font-size: 14px; }
|
||||
.map-container iframe {
|
||||
width: 100%;
|
||||
height: 350px;
|
||||
border-radius: var(--radius);
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
footer {
|
||||
background: var(--bg-light);
|
||||
border-top: 1px solid #222;
|
||||
padding: 32px 24px;
|
||||
text-align: center;
|
||||
color: var(--text-muted);
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer-inner {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.footer-links { margin-bottom: 12px; }
|
||||
.footer-links a { margin: 0 12px; color: var(--text-muted); }
|
||||
|
||||
/* Mobile */
|
||||
@media (max-width: 768px) {
|
||||
.hero { grid-template-columns: 1fr; padding: 40px 16px; }
|
||||
.hero h1 { font-size: 28px; }
|
||||
.hero-image img { height: 250px; }
|
||||
.hero-cta { flex-direction: column; }
|
||||
.form-row { grid-template-columns: 1fr; }
|
||||
.contact-grid { grid-template-columns: 1fr; }
|
||||
.gallery-item { grid-template-columns: 1fr; }
|
||||
nav { gap: 10px; }
|
||||
.nav-phone span { display: none; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<nav style="display:flex;align-items:center;">
|
||||
<a href="/">🏠 ИЖС Дом</a>
|
||||
<a href="/blog/">📝 Статьи</a>
|
||||
<div class="search-bar" id="search"></div>
|
||||
<header>
|
||||
<div class="header-inner">
|
||||
<a href="/" class="logo">
|
||||
<img src="/images/logo.png" alt="GV Auto Collision">
|
||||
GV Auto Collision
|
||||
</a>
|
||||
<nav>
|
||||
<a href="/#estimate">Free Estimate</a>
|
||||
<a href="/#services">Services</a>
|
||||
<a href="/#gallery">Portfolio</a>
|
||||
<a href="tel:3106546484" class="nav-phone">📞 <span>(310) 654-6484</span></a>
|
||||
<a href="/#estimate" class="nav-cta">Get Estimate</a>
|
||||
</nav>
|
||||
</header>
|
||||
<slot />
|
||||
<footer>
|
||||
<p>© 2024-2026 ИЖС Дом. Строительство домов.</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<slot />
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div class="footer-links">
|
||||
<a href="/">Home</a>
|
||||
<a href="/#services">Services</a>
|
||||
<a href="/#gallery">Portfolio</a>
|
||||
<a href="/#estimate">Free Estimate</a>
|
||||
<a href="tel:3106546484">Call (310) 654-6484</a>
|
||||
</div>
|
||||
<p>© 2026 GV Auto Collision. 794 Merchant St Unit 3, Los Angeles, CA 90021</p>
|
||||
<p style="margin-top:8px;font-size:12px;">Professional collision repair. OEM parts. Written warranty. Free towing.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script is:inline>
|
||||
new PagefindUI({ element: "#search", showSubResults: false, showImages: false });
|
||||
</script>
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
---
|
||||
<BaseLayout title="404 — Страница не найдена">
|
||||
<article style="text-align:center;padding:60px 20px;">
|
||||
<h1 style="font-size:48px;">404</h1>
|
||||
<p>Страница не найдена</p>
|
||||
<p><a href="/">🏠 На главную</a> | <a href="/blog/">📝 Все статьи</a></p>
|
||||
</article>
|
||||
</BaseLayout>
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
---
|
||||
<BaseLayout title="О проекте — ИЖС Дом" ogType="website">
|
||||
<article>
|
||||
<h1>О проекте ИЖС Дом</h1>
|
||||
<p><strong>ИЖС Дом</strong> — экспертный ресурс о строительстве индивидуальных жилых домов.</p>
|
||||
|
||||
<h2>Наша миссия</h2>
|
||||
<p>Мы помогаем будущим домовладельцам принимать взвешенные решения на каждом этапе строительства: от выбора участка до отделки фасада.</p>
|
||||
|
||||
<h2>Автор</h2>
|
||||
<p>Статьи написаны практикующими специалистами в области строительства с опытом более 5 лет. Каждый материал проходит проверку на актуальность данных.</p>
|
||||
|
||||
<h2>Контакты</h2>
|
||||
<p>Email: info@izhs-dom.ru</p>
|
||||
<p>Телефон: +7 (347) 000-00-00</p>
|
||||
|
||||
<h2>Принципы</h2>
|
||||
<ul>
|
||||
<li>Только проверенная информация</li>
|
||||
<li>Актуальные цены и технологии 2026 года</li>
|
||||
<li>Прозрачность и отсутствие скрытой рекламы</li>
|
||||
<li>E-E-A-T: опыт, экспертиза, авторитетность, доверие</li>
|
||||
</ul>
|
||||
</article>
|
||||
</BaseLayout>
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import Breadcrumbs from '../../components/Breadcrumbs.astro';
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const posts = import.meta.glob('/src/content/blog/*.md');
|
||||
return Object.keys(posts).map((path) => {
|
||||
const slug = path.replace('/src/content/blog/', '').replace('.md', '');
|
||||
return { params: { slug } };
|
||||
});
|
||||
}
|
||||
|
||||
const { slug } = Astro.params;
|
||||
const posts = import.meta.glob('/src/content/blog/*.md', { eager: true });
|
||||
const postPath = `/src/content/blog/${slug}.md`;
|
||||
const post = posts[postPath];
|
||||
const frontmatter = post?.frontmatter || {};
|
||||
const Content = post?.default;
|
||||
|
||||
const title = frontmatter.title || slug;
|
||||
const description = frontmatter.description || title;
|
||||
const date = frontmatter.date || '';
|
||||
const related = frontmatter.related || [];
|
||||
---
|
||||
<BaseLayout
|
||||
title={title}
|
||||
description={description}
|
||||
date={date}
|
||||
slug={slug}
|
||||
>
|
||||
<article>
|
||||
<Breadcrumbs />
|
||||
{Content && <Content />}
|
||||
</article>
|
||||
{related.length > 0 && (
|
||||
<div class="related">
|
||||
<h3>Похожие статьи</h3>
|
||||
{related.map((r) => {
|
||||
const rSlug = r.split('/').filter(Boolean).pop() || r;
|
||||
return <a href={`/blog/${rSlug}/`}>{rSlug.replace(/-/g, ' ')}</a>;
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</BaseLayout>
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
const posts = Object.entries(import.meta.glob('/src/content/blog/*.md', { eager: true }));
|
||||
---
|
||||
<BaseLayout title="Статьи — ИЖС Дом">
|
||||
<article><h1>Статьи о строительстве</h1>
|
||||
<ul>
|
||||
{posts.map(([path, post]) => (
|
||||
<li><a href={path.replace('/src/content/blog/', '/blog/').replace('.md', '/')}>
|
||||
{post.frontmatter?.title || path}
|
||||
</a></li>
|
||||
))}
|
||||
</ul></article>
|
||||
</BaseLayout>
|
||||
@@ -1,31 +0,0 @@
|
||||
// JSON Feed для AI-агрегаторов (работает в dev и prod)
|
||||
export const prerender = true;
|
||||
|
||||
const BASE = 'https://izhs-dom.ru';
|
||||
const slugs = ['vybor-uchastka', 'fundament-dlya-doma', 'karkasnyj-dom', 'krovlya-doma', 'inzhenernye-sistemy', 'otdelka-fasada'];
|
||||
const titles = {
|
||||
'vybor-uchastka': 'Как выбрать участок под ИЖС',
|
||||
'fundament-dlya-doma': 'Фундамент для дома — какой выбрать',
|
||||
'karkasnyj-dom': 'Строительство каркасного дома',
|
||||
'krovlya-doma': 'Кровля крыши — материалы и монтаж',
|
||||
'inzhenernye-sistemy': 'Инженерные системы дома',
|
||||
'otdelka-fasada': 'Отделка фасада деревянного дома',
|
||||
};
|
||||
|
||||
export function GET() {
|
||||
return new Response(JSON.stringify({
|
||||
version: 'https://jsonfeed.org/version/1.1',
|
||||
title: 'ИЖС Дом — статьи о строительстве',
|
||||
home_page_url: BASE,
|
||||
feed_url: `${BASE}/feed.json`,
|
||||
language: 'ru',
|
||||
items: slugs.map(s => ({
|
||||
id: `${BASE}/blog/${s}/`,
|
||||
url: `${BASE}/blog/${s}/`,
|
||||
title: titles[s] || s,
|
||||
date_published: '2026-05-31',
|
||||
})),
|
||||
}), {
|
||||
headers: { 'Content-Type': 'application/feed+json; charset=utf-8' },
|
||||
});
|
||||
}
|
||||
@@ -1,10 +1,202 @@
|
||||
---
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
---
|
||||
<BaseLayout title="ИЖС Дом — строительство домов">
|
||||
<article>
|
||||
<h1>Строительство домов ИЖС</h1>
|
||||
<p>Экспертные статьи о строительстве индивидуальных жилых домов: от фундамента до крыши.</p>
|
||||
<p><a href="/blog/">📝 Все статьи →</a></p>
|
||||
</article>
|
||||
|
||||
<BaseLayout title="GV Auto Collision — Professional Collision Repair in Los Angeles">
|
||||
<main>
|
||||
<!-- Hero Section -->
|
||||
<section class="hero">
|
||||
<div class="hero-content">
|
||||
<h1>Got in an Accident? We'll Handle Everything.</h1>
|
||||
<p class="hero-subtitle">Free photo estimate in 15 minutes. No insurance headaches. Just quality repairs.</p>
|
||||
<div class="hero-cta">
|
||||
<a href="#estimate" class="btn btn-primary">Get Free Photo Estimate</a>
|
||||
<a href="tel:3106546484" class="btn btn-secondary">Call (310) 654-6484</a>
|
||||
</div>
|
||||
<div class="trust-badges">
|
||||
<div class="badge">✓ Free Towing</div>
|
||||
<div class="badge">✓ OEM Parts</div>
|
||||
<div class="badge">✓ Written Warranty</div>
|
||||
<div class="badge">✓ 15-Min Response</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-image">
|
||||
<img src="/images/hero-repair.jpg" alt="GV Auto Collision repair shop" loading="eager" />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Trust Section -->
|
||||
<section class="trust-section">
|
||||
<h2>Why Choose GV Auto Collision?</h2>
|
||||
<div class="trust-grid">
|
||||
<div class="trust-card">
|
||||
<div class="trust-icon">🛡️</div>
|
||||
<h3>You Choose the Shop</h3>
|
||||
<p>By law, you have the right to choose your repair shop. We fight for you, not the insurance company.</p>
|
||||
</div>
|
||||
<div class="trust-card">
|
||||
<div class="trust-icon">🔍</div>
|
||||
<h3>Hidden Damage Detection</h3>
|
||||
<p>We find what adjusters miss. Full structural inspection to ensure your safety.</p>
|
||||
</div>
|
||||
<div class="trust-card">
|
||||
<div class="trust-icon">🏭</div>
|
||||
<h3>OEM Factory-Standard</h3>
|
||||
<p>Only genuine parts. No shortcuts. Your car restored to original specifications.</p>
|
||||
</div>
|
||||
<div class="trust-card">
|
||||
<div class="trust-icon">⚡</div>
|
||||
<h3>Fast Turnaround</h3>
|
||||
<p>Get back on the road faster. We coordinate with insurance to minimize your downtime.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- How It Works -->
|
||||
<section class="process-section">
|
||||
<h2>How It Works</h2>
|
||||
<div class="process-steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Free Photo Estimate</h3>
|
||||
<p>Send us photos of the damage. Get your estimate within 15 minutes.</p>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<h3>We Handle Insurance</h3>
|
||||
<p>We manage the entire claim process. You don't have to fight adjusters.</p>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Expert Repair</h3>
|
||||
<p>Our certified technicians restore your vehicle to factory standards.</p>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<h3>Quality Guaranteed</h3>
|
||||
<p>Written warranty on all repairs. Drive with confidence.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Before/After Gallery -->
|
||||
<section class="gallery-section">
|
||||
<h2>Real Results</h2>
|
||||
<p class="section-subtitle">See the difference quality repair makes</p>
|
||||
<div class="gallery-grid">
|
||||
<div class="gallery-item">
|
||||
<div class="gallery-before">
|
||||
<img src="/images/before1.jpg" alt="Before repair - damaged SUV" />
|
||||
<span class="gallery-label">Before</span>
|
||||
</div>
|
||||
<div class="gallery-after">
|
||||
<img src="/images/after1.jpg" alt="After repair - restored SUV" />
|
||||
<span class="gallery-label">After</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gallery-item">
|
||||
<div class="gallery-before">
|
||||
<img src="/images/before2.jpg" alt="Before repair - damaged vehicle" />
|
||||
<span class="gallery-label">Before</span>
|
||||
</div>
|
||||
<div class="gallery-after">
|
||||
<img src="/images/after2.jpg" alt="After repair - restored vehicle" />
|
||||
<span class="gallery-label">After</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gallery-item">
|
||||
<div class="gallery-before">
|
||||
<img src="/images/before3.jpg" alt="Before repair - collision damage" />
|
||||
<span class="gallery-label">Before</span>
|
||||
</div>
|
||||
<div class="gallery-after">
|
||||
<img src="/images/after3.jpg" alt="After repair - like new" />
|
||||
<span class="gallery-label">After</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Services -->
|
||||
<section class="services-section">
|
||||
<h2>Our Services</h2>
|
||||
<div class="services-grid">
|
||||
<div class="service-card">
|
||||
<h3>Collision Repair</h3>
|
||||
<p>Full structural and cosmetic repairs after accidents.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Paintless Dent Repair</h3>
|
||||
<p>Remove dents without painting. Faster, cheaper, original finish preserved.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Frame Straightening</h3>
|
||||
<p>Laser-guided alignment to factory specifications.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>ADAS Calibration</h3>
|
||||
<p>Safety sensor recalibration after repairs (75% of new cars need this).</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Tesla & EV Repair</h3>
|
||||
<p>Specialized repair for electric vehicles including battery systems.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Insurance Claims</h3>
|
||||
<p>We handle the entire process. You focus on getting better.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Free Towing</h3>
|
||||
<p>We pick up your vehicle from the accident scene at no cost.</p>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<h3>Rental Coordination</h3>
|
||||
<p>We coordinate with insurance for your rental car during repair.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Estimate Form -->
|
||||
<section id="estimate" class="estimate-section">
|
||||
<h2>Get Your Free Photo Estimate</h2>
|
||||
<p class="section-subtitle">Response within 15 minutes</p>
|
||||
<form class="estimate-form" action="/api/estimate" method="POST">
|
||||
<div class="form-row">
|
||||
<input type="text" name="firstName" placeholder="First Name" required />
|
||||
<input type="text" name="lastName" placeholder="Last Name" required />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="email" name="email" placeholder="Email" required />
|
||||
<input type="tel" name="phone" placeholder="Phone" required />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="text" name="carMake" placeholder="Car Make (e.g., Toyota)" required />
|
||||
<input type="text" name="carModel" placeholder="Car Model (e.g., Camry)" required />
|
||||
<input type="text" name="carYear" placeholder="Year" required />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="text" name="damageType" placeholder="Damage Type (e.g., rear-end, side dent)" required />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<textarea name="message" placeholder="Describe the damage or add details..." rows="4"></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-full">Submit for Free Estimate</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<!-- Contact Info -->
|
||||
<section class="contact-section">
|
||||
<div class="contact-grid">
|
||||
<div class="contact-info">
|
||||
<h2>Visit Us</h2>
|
||||
<p class="address">794 Merchant St Unit 3<br />Los Angeles, CA 90021</p>
|
||||
<a href="tel:3106546484" class="phone-link">(310) 654-6484</a>
|
||||
<p class="hours">Open 7 Days a Week<br />Mon-Sun: 8:00 AM - 6:00 PM</p>
|
||||
</div>
|
||||
<div class="map-container">
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3305.7!2d-118.23!3d34.04!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zMzTCsDAyJzI0LjAiTiAxMTjCsDEzJzQ4LjAiVw!5e0!3m2!1sen!2sus!4v1" allowfullscreen="" loading="lazy"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</BaseLayout>
|
||||
@@ -1,37 +1,70 @@
|
||||
// Генерирует llms.txt с правильным charset=utf-8
|
||||
// LLMs.txt — описание сайта для AI-агентов и поисковых систем
|
||||
export const prerender = true;
|
||||
const content = `# ИЖС Дом — строительство индивидуальных жилых домов
|
||||
|
||||
> Экспертные статьи о строительстве ИЖС: от выбора участка до отделки.
|
||||
> Сайт оптимизирован для AI-цитирования (Яндекс Нейро, ChatGPT Search, Perplexity).
|
||||
const BASE = 'https://www.gvautocollision.com';
|
||||
|
||||
## Основные разделы
|
||||
const content = `# GV Auto Collision
|
||||
|
||||
- [Главная](https://izhs-dom.ru): Общая информация о строительстве домов
|
||||
- [Статьи](https://izhs-dom.ru/blog): 6 экспертных статей о строительстве
|
||||
- [О проекте](https://izhs-dom.ru/about): Миссия, автор, контакты
|
||||
Professional collision repair shop in Los Angeles, CA.
|
||||
|
||||
## Статьи
|
||||
## Services
|
||||
|
||||
- [Как выбрать участок под ИЖС](https://izhs-dom.ru/blog/vybor-uchastka): Категории земли, коммуникации, геология, юридическая проверка
|
||||
- [Фундамент для дома — какой выбрать](https://izhs-dom.ru/blog/fundament-dlya-doma): Ленточный, плита, свайный, столбчатый — сравнение и цены
|
||||
- [Строительство каркасного дома](https://izhs-dom.ru/blog/karkasnyj-dom): Этапы, цены 2026, мифы и факты
|
||||
- [Кровля крыши — материалы и монтаж](https://izhs-dom.ru/blog/krovlya-doma): Металлочерепица, гибкая, керамическая, фальцевая
|
||||
- [Инженерные системы дома](https://izhs-dom.ru/blog/inzhenernye-sistemy): Отопление, водоснабжение, канализация, электрика
|
||||
- [Отделка фасада деревянного дома](https://izhs-dom.ru/blog/otdelka-fasada): Материалы, цены, критерии выбора
|
||||
- Collision Repair (full structural and cosmetic)
|
||||
- Paintless Dent Repair (PDR)
|
||||
- Frame Straightening (laser-guided alignment)
|
||||
- ADAS Calibration (safety sensor recalibration)
|
||||
- Tesla & EV Repair
|
||||
- Insurance Claims Management
|
||||
- Free Towing from accident scene
|
||||
- Rental Car Coordination
|
||||
|
||||
## Для разработчиков
|
||||
## Why Choose Us
|
||||
|
||||
- Sitemap: [sitemap.xml](https://izhs-dom.ru/sitemap.xml)
|
||||
- JSON Feed: [feed.json](https://izhs-dom.ru/feed.json)
|
||||
- Schema.org: Article + BreadcrumbList + Organization (sameAs Entity Linking)
|
||||
- Технологии: Astro 5, статическая генерация, SEO-оптимизация`;
|
||||
- Free photo estimate within 15 minutes
|
||||
- OEM factory-standard parts only
|
||||
- Written warranty on all repairs
|
||||
- We handle insurance claims for you
|
||||
- 7 days a week, 8 AM - 6 PM
|
||||
- Located at 794 Merchant St Unit 3, Los Angeles, CA 90021
|
||||
|
||||
## Contact
|
||||
|
||||
- Phone: (310) 654-6484
|
||||
- Address: 794 Merchant St Unit 3, Los Angeles, CA 90021
|
||||
- Open: Mon-Sun 8:00 AM - 6:00 PM
|
||||
|
||||
## Service Areas
|
||||
|
||||
Los Angeles, Beverly Hills, Malibu, Santa Monica, West LA, Downtown LA, Venice, Culver City, Brentwood, Pacific Palisades, Marina del Rey, Century City, Westwood, UCLA area.
|
||||
|
||||
## Key Differentiators
|
||||
|
||||
- You choose the shop (by law)
|
||||
- We fight for your insurance payout
|
||||
- Hidden damage detection
|
||||
- No aftermarket parts
|
||||
- Factory-spec restoration
|
||||
|
||||
## FAQ
|
||||
|
||||
### Do I have to go to my insurance-approved shop?
|
||||
No. By law, you have the right to choose your repair shop. Your insurance cannot require you to go to a specific shop.
|
||||
|
||||
### Is the estimate really free?
|
||||
Yes. Free photo estimate, no obligation. We respond within 15 minutes.
|
||||
|
||||
### What types of vehicles do you repair?
|
||||
All makes and models: BMW, Mercedes, Audi, Porsche, Tesla, Lexus, Toyota, Honda, Ford, Chevrolet, Ferrari, Lamborghini, Rolls-Royce, and more.
|
||||
|
||||
### Do you offer a warranty?
|
||||
Yes. Written warranty on all repairs. Drive with confidence.
|
||||
|
||||
### Do you handle insurance claims?
|
||||
Yes. We manage the entire claim process — documentation, negotiation, and repair. You don't have to fight adjusters.
|
||||
`;
|
||||
|
||||
export function GET() {
|
||||
return new Response(content, {
|
||||
headers: {
|
||||
'Content-Type': 'text/plain; charset=utf-8',
|
||||
'Cache-Control': 'public, max-age=3600',
|
||||
},
|
||||
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
|
||||
});
|
||||
}
|
||||
@@ -1,33 +1,24 @@
|
||||
// RSS Feed для Яндекс.Дзен, Feedly, агрегаторов
|
||||
// RSS Feed для Google Business, агрегаторов
|
||||
export const prerender = true;
|
||||
|
||||
const BASE = 'https://izhs-dom.ru';
|
||||
const slugs = ['vybor-uchastka', 'fundament-dlya-doma', 'karkasnyj-dom', 'krovlya-doma', 'inzhenernye-sistemy', 'otdelka-fasada'];
|
||||
const titles = {
|
||||
'vybor-uchastka': 'Как выбрать участок под ИЖС',
|
||||
'fundament-dlya-doma': 'Фундамент для дома — какой выбрать',
|
||||
'karkasnyj-dom': 'Строительство каркасного дома',
|
||||
'krovlya-doma': 'Кровля крыши — материалы и монтаж',
|
||||
'inzhenernye-sistemy': 'Инженерные системы дома',
|
||||
'otdelka-fasada': 'Отделка фасада деревянного дома',
|
||||
};
|
||||
const BASE = 'https://www.gvautocollision.com';
|
||||
|
||||
const items = slugs.map(s => ` <item>
|
||||
<title>${titles[s]}</title>
|
||||
<link>${BASE}/blog/${s}/</link>
|
||||
<guid>${BASE}/blog/${s}/</guid>
|
||||
<pubDate>Sat, 31 May 2026 00:00:00 +0500</pubDate>
|
||||
<description>${titles[s]} — экспертная статья на ИЖС Дом</description>
|
||||
</item>`).join('\n');
|
||||
const items = ` <item>
|
||||
<title>GV Auto Collision — Professional Collision Repair in Los Angeles</title>
|
||||
<link>${BASE}/</link>
|
||||
<guid>${BASE}/</guid>
|
||||
<pubDate>Wed, 09 Aug 2026 00:00:00 +0000</pubDate>
|
||||
<description>Professional collision repair in Los Angeles. Free towing, OEM parts, written warranty. Get your free photo estimate in 15 minutes.</description>
|
||||
</item>`;
|
||||
|
||||
const rss = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>ИЖС Дом — статьи о строительстве</title>
|
||||
<title>GV Auto Collision — Collision Repair Los Angeles</title>
|
||||
<link>${BASE}</link>
|
||||
<description>Экспертные статьи о строительстве ИЖС: фундамент, каркас, кровля, инженерные системы</description>
|
||||
<language>ru</language>
|
||||
<lastBuildDate>Sat, 31 May 2026 00:00:00 +0500</lastBuildDate>
|
||||
<description>Professional collision repair. Free towing. OEM parts. Written warranty. Serving Los Angeles, Beverly Hills, Malibu, Santa Monica, West LA.</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 09 Aug 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="${BASE}/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
${items}
|
||||
</channel>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
// Генерирует sitemap.xml (работает в dev и prod)
|
||||
export const prerender = true;
|
||||
const BASE = 'https://izhs-dom.ru';
|
||||
const BASE = 'https://www.gvautocollision.com';
|
||||
|
||||
const pages = [
|
||||
'', 'blog/', 'about/',
|
||||
'blog/vybor-uchastka/', 'blog/fundament-dlya-doma/',
|
||||
'blog/karkasnyj-dom/', 'blog/krovlya-doma/',
|
||||
'blog/inzhenernye-sistemy/', 'blog/otdelka-fasada/',
|
||||
'',
|
||||
'#estimate',
|
||||
'#services',
|
||||
'#gallery',
|
||||
];
|
||||
|
||||
const xml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
${pages.map(p => ` <url><loc>${BASE}/${p}</loc><lastmod>2026-05-31</lastmod></url>`).join('\n')}
|
||||
${pages.map(p => ` <url><loc>${BASE}${p}</loc><lastmod>2026-08-09</lastmod></url>`).join('\n')}
|
||||
</urlset>`;
|
||||
|
||||
export function GET() {
|
||||
|
||||