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';
|
import sitemap from '@astrojs/sitemap';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: 'https://izhs-dom.ru',
|
site: 'https://www.gvautocollision.com',
|
||||||
output: 'static',
|
output: 'static',
|
||||||
integrations: [sitemap()],
|
integrations: [sitemap()],
|
||||||
image: {
|
image: {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "izhs-dom",
|
"name": "gv-autocollision",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"scripts": {
|
"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: /
|
Allow: /
|
||||||
Disallow: /cdn-cgi/
|
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',
|
ogType = 'article',
|
||||||
} = Astro.props;
|
} = Astro.props;
|
||||||
|
|
||||||
const baseUrl = 'https://izhs-dom.ru';
|
const baseUrl = 'https://www.gvautocollision.com';
|
||||||
const pageUrl = slug ? `${baseUrl}/blog/${slug}/` : baseUrl;
|
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({
|
const articleSchema = slug ? JSON.stringify({
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
@@ -26,44 +26,70 @@ const articleSchema = slug ? JSON.stringify({
|
|||||||
"datePublished": date || new Date().toISOString().split('T')[0],
|
"datePublished": date || new Date().toISOString().split('T')[0],
|
||||||
"image": image || undefined,
|
"image": image || undefined,
|
||||||
"url": `${baseUrl}/blog/${slug}/`,
|
"url": `${baseUrl}/blog/${slug}/`,
|
||||||
"author": { "@type": "Organization", "name": "ИЖС Дом" },
|
"author": { "@type": "Organization", "name": "GV Auto Collision" },
|
||||||
"publisher": { "@type": "Organization", "name": "ИЖС Дом" }
|
"publisher": { "@type": "Organization", "name": "GV Auto Collision" }
|
||||||
}) : '';
|
}) : '';
|
||||||
|
|
||||||
const breadcrumb = slug ? JSON.stringify({
|
const breadcrumb = slug ? JSON.stringify({
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
"@type": "BreadcrumbList",
|
"@type": "BreadcrumbList",
|
||||||
"itemListElement": [
|
"itemListElement": [
|
||||||
{ "@type": "ListItem", "position": 1, "name": "Главная", "item": baseUrl },
|
{ "@type": "ListItem", "position": 1, "name": "Home", "item": baseUrl },
|
||||||
{ "@type": "ListItem", "position": 2, "name": "Статьи", "item": `${baseUrl}/blog/` },
|
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": `${baseUrl}/blog/` },
|
||||||
{ "@type": "ListItem", "position": 3, "name": title, "item": `${baseUrl}/blog/${slug}/` }
|
{ "@type": "ListItem", "position": 3, "name": title, "item": `${baseUrl}/blog/${slug}/` }
|
||||||
]
|
]
|
||||||
}) : '';
|
}) : '';
|
||||||
|
|
||||||
const orgSchema = JSON.stringify({
|
const localBusinessSchema = JSON.stringify({
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
"@type": "Organization",
|
"@type": "AutoRepair",
|
||||||
"name": "ИЖС Дом",
|
"name": "GV Auto Collision",
|
||||||
|
"description": "Professional collision repair in Los Angeles. Free towing, OEM parts, written warranty.",
|
||||||
"url": baseUrl,
|
"url": baseUrl,
|
||||||
"description": "Строительство индивидуальных жилых домов в Уфе",
|
"telephone": "+13106546484",
|
||||||
"sameAs": [
|
"address": {
|
||||||
"https://ru.wikipedia.org/wiki/Индивидуальное_жилищное_строительство",
|
"@type": "PostalAddress",
|
||||||
"https://www.wikidata.org/wiki/Q4202048",
|
"streetAddress": "794 Merchant St Unit 3",
|
||||||
"https://yandex.ru/profile/izhs-dom-ufa",
|
"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>
|
<!DOCTYPE html>
|
||||||
<html lang="ru">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
<meta name="description" content={description}>
|
<meta name="description" content={description}>
|
||||||
<link rel="canonical" href={pageUrl}>
|
<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>
|
<link href="/pagefind/pagefind-ui.css" rel="stylesheet" is:inline>
|
||||||
<script src="/pagefind/pagefind-ui.js" is:inline></script>
|
<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:description" content={description}>
|
||||||
<meta property="og:url" content={pageUrl}>
|
<meta property="og:url" content={pageUrl}>
|
||||||
<meta property="og:image" content={ogImage}>
|
<meta property="og:image" content={ogImage}>
|
||||||
<meta property="og:site_name" content="ИЖС Дом">
|
<meta property="og:site_name" content="GV Auto Collision">
|
||||||
<meta property="og:locale" content="ru_RU">
|
<meta property="og:locale" content="en_US">
|
||||||
|
|
||||||
<!-- Twitter -->
|
<!-- Twitter -->
|
||||||
<meta name="twitter:card" content="summary_large_image">
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
<meta name="twitter:title" content={title}>
|
<meta name="twitter:title" content={title}>
|
||||||
<meta name="twitter:description" content={description}>
|
<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 -->
|
<!-- Schema.org JSON-LD -->
|
||||||
{articleSchema && <script type="application/ld+json" set:html={articleSchema}></script>}
|
{articleSchema && <script type="application/ld+json" set:html={articleSchema}></script>}
|
||||||
{breadcrumb && <script type="application/ld+json" set:html={breadcrumb}></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>
|
<style>
|
||||||
:root{--bg:#f8f9fa;--text:#1a1a2e;--accent:#2d6a4f;--card:#fff;--radius:8px}
|
:root {
|
||||||
*{margin:0;padding:0;box-sizing:border-box}
|
--bg: #0a0a0a;
|
||||||
body{font-family:system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.7}
|
--bg-light: #141414;
|
||||||
.container{max-width:800px;margin:0 auto;padding:20px}
|
--text: #f0f0f0;
|
||||||
header{padding:20px 0;border-bottom:2px solid var(--accent)}
|
--text-muted: #999;
|
||||||
nav a{margin-right:16px;color:var(--accent);text-decoration:none;font-weight:600}
|
--accent: #c8102e;
|
||||||
article{margin:32px 0;padding:24px;background:var(--card);border-radius:var(--radius);box-shadow:0 1px 3px rgba(0,0,0,.05)}
|
--accent-hover: #a00d24;
|
||||||
article h1{font-size:28px;margin-bottom:12px}
|
--card: #1a1a1a;
|
||||||
article h2{font-size:20px;margin:24px 0 12px}
|
--radius: 12px;
|
||||||
article p{margin:8px 0}
|
--shadow: 0 4px 20px rgba(0,0,0,0.3);
|
||||||
article ul,article ol{margin:8px 0;padding-left:24px}
|
}
|
||||||
article strong{color:var(--accent)}
|
* { margin:0; padding:0; box-sizing:border-box; }
|
||||||
.related{margin-top:32px;padding:16px;background:var(--card);border-radius:var(--radius)}
|
body {
|
||||||
.related a{display:block;padding:4px 0;color:var(--accent)}
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
footer{text-align:center;padding:32px 0;color:#888;font-size:14px}
|
background: var(--bg);
|
||||||
/* Поиск */
|
color: var(--text);
|
||||||
.search-bar{max-width:300px;margin-left:auto}
|
line-height: 1.7;
|
||||||
.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}
|
a { color: var(--accent); text-decoration: none; }
|
||||||
.pagefind-ui__result{padding:8px 12px;border-bottom:1px solid #eee}
|
a:hover { text-decoration: underline; }
|
||||||
.pagefind-ui__result:last-child{border:none}
|
|
||||||
.pagefind-ui__result a{color:var(--accent);font-weight:600;text-decoration:none}
|
/* Header */
|
||||||
.pagefind-ui__result p{font-size:12px;color:#666;margin:2px 0}
|
header {
|
||||||
.pagefind-ui__drawer{display:none !important}
|
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>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<header>
|
||||||
<header>
|
<div class="header-inner">
|
||||||
<nav style="display:flex;align-items:center;">
|
<a href="/" class="logo">
|
||||||
<a href="/">🏠 ИЖС Дом</a>
|
<img src="/images/logo.png" alt="GV Auto Collision">
|
||||||
<a href="/blog/">📝 Статьи</a>
|
GV Auto Collision
|
||||||
<div class="search-bar" id="search"></div>
|
</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>
|
</nav>
|
||||||
</header>
|
</div>
|
||||||
<slot />
|
</header>
|
||||||
<footer>
|
|
||||||
<p>© 2024-2026 ИЖС Дом. Строительство домов.</p>
|
<slot />
|
||||||
</footer>
|
|
||||||
</div>
|
<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>
|
<script is:inline>
|
||||||
new PagefindUI({ element: "#search", showSubResults: false, showImages: false });
|
new PagefindUI({ element: "#search", showSubResults: false, showImages: false });
|
||||||
</script>
|
</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';
|
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||||
---
|
---
|
||||||
<BaseLayout title="ИЖС Дом — строительство домов">
|
|
||||||
<article>
|
<BaseLayout title="GV Auto Collision — Professional Collision Repair in Los Angeles">
|
||||||
<h1>Строительство домов ИЖС</h1>
|
<main>
|
||||||
<p>Экспертные статьи о строительстве индивидуальных жилых домов: от фундамента до крыши.</p>
|
<!-- Hero Section -->
|
||||||
<p><a href="/blog/">📝 Все статьи →</a></p>
|
<section class="hero">
|
||||||
</article>
|
<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>
|
</BaseLayout>
|
||||||
@@ -1,37 +1,70 @@
|
|||||||
// Генерирует llms.txt с правильным charset=utf-8
|
// LLMs.txt — описание сайта для AI-агентов и поисковых систем
|
||||||
export const prerender = true;
|
export const prerender = true;
|
||||||
const content = `# ИЖС Дом — строительство индивидуальных жилых домов
|
|
||||||
|
|
||||||
> Экспертные статьи о строительстве ИЖС: от выбора участка до отделки.
|
const BASE = 'https://www.gvautocollision.com';
|
||||||
> Сайт оптимизирован для AI-цитирования (Яндекс Нейро, ChatGPT Search, Perplexity).
|
|
||||||
|
|
||||||
## Основные разделы
|
const content = `# GV Auto Collision
|
||||||
|
|
||||||
- [Главная](https://izhs-dom.ru): Общая информация о строительстве домов
|
Professional collision repair shop in Los Angeles, CA.
|
||||||
- [Статьи](https://izhs-dom.ru/blog): 6 экспертных статей о строительстве
|
|
||||||
- [О проекте](https://izhs-dom.ru/about): Миссия, автор, контакты
|
|
||||||
|
|
||||||
## Статьи
|
## Services
|
||||||
|
|
||||||
- [Как выбрать участок под ИЖС](https://izhs-dom.ru/blog/vybor-uchastka): Категории земли, коммуникации, геология, юридическая проверка
|
- Collision Repair (full structural and cosmetic)
|
||||||
- [Фундамент для дома — какой выбрать](https://izhs-dom.ru/blog/fundament-dlya-doma): Ленточный, плита, свайный, столбчатый — сравнение и цены
|
- Paintless Dent Repair (PDR)
|
||||||
- [Строительство каркасного дома](https://izhs-dom.ru/blog/karkasnyj-dom): Этапы, цены 2026, мифы и факты
|
- Frame Straightening (laser-guided alignment)
|
||||||
- [Кровля крыши — материалы и монтаж](https://izhs-dom.ru/blog/krovlya-doma): Металлочерепица, гибкая, керамическая, фальцевая
|
- ADAS Calibration (safety sensor recalibration)
|
||||||
- [Инженерные системы дома](https://izhs-dom.ru/blog/inzhenernye-sistemy): Отопление, водоснабжение, канализация, электрика
|
- Tesla & EV Repair
|
||||||
- [Отделка фасада деревянного дома](https://izhs-dom.ru/blog/otdelka-fasada): Материалы, цены, критерии выбора
|
- Insurance Claims Management
|
||||||
|
- Free Towing from accident scene
|
||||||
|
- Rental Car Coordination
|
||||||
|
|
||||||
## Для разработчиков
|
## Why Choose Us
|
||||||
|
|
||||||
- Sitemap: [sitemap.xml](https://izhs-dom.ru/sitemap.xml)
|
- Free photo estimate within 15 minutes
|
||||||
- JSON Feed: [feed.json](https://izhs-dom.ru/feed.json)
|
- OEM factory-standard parts only
|
||||||
- Schema.org: Article + BreadcrumbList + Organization (sameAs Entity Linking)
|
- Written warranty on all repairs
|
||||||
- Технологии: Astro 5, статическая генерация, SEO-оптимизация`;
|
- 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() {
|
export function GET() {
|
||||||
return new Response(content, {
|
return new Response(content, {
|
||||||
headers: {
|
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
|
||||||
'Content-Type': 'text/plain; charset=utf-8',
|
|
||||||
'Cache-Control': 'public, max-age=3600',
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1,33 +1,24 @@
|
|||||||
// RSS Feed для Яндекс.Дзен, Feedly, агрегаторов
|
// RSS Feed для Google Business, агрегаторов
|
||||||
export const prerender = true;
|
export const prerender = true;
|
||||||
|
|
||||||
const BASE = 'https://izhs-dom.ru';
|
const BASE = 'https://www.gvautocollision.com';
|
||||||
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 items = slugs.map(s => ` <item>
|
const items = ` <item>
|
||||||
<title>${titles[s]}</title>
|
<title>GV Auto Collision — Professional Collision Repair in Los Angeles</title>
|
||||||
<link>${BASE}/blog/${s}/</link>
|
<link>${BASE}/</link>
|
||||||
<guid>${BASE}/blog/${s}/</guid>
|
<guid>${BASE}/</guid>
|
||||||
<pubDate>Sat, 31 May 2026 00:00:00 +0500</pubDate>
|
<pubDate>Wed, 09 Aug 2026 00:00:00 +0000</pubDate>
|
||||||
<description>${titles[s]} — экспертная статья на ИЖС Дом</description>
|
<description>Professional collision repair in Los Angeles. Free towing, OEM parts, written warranty. Get your free photo estimate in 15 minutes.</description>
|
||||||
</item>`).join('\n');
|
</item>`;
|
||||||
|
|
||||||
const rss = `<?xml version="1.0" encoding="UTF-8"?>
|
const rss = `<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
<channel>
|
<channel>
|
||||||
<title>ИЖС Дом — статьи о строительстве</title>
|
<title>GV Auto Collision — Collision Repair Los Angeles</title>
|
||||||
<link>${BASE}</link>
|
<link>${BASE}</link>
|
||||||
<description>Экспертные статьи о строительстве ИЖС: фундамент, каркас, кровля, инженерные системы</description>
|
<description>Professional collision repair. Free towing. OEM parts. Written warranty. Serving Los Angeles, Beverly Hills, Malibu, Santa Monica, West LA.</description>
|
||||||
<language>ru</language>
|
<language>en</language>
|
||||||
<lastBuildDate>Sat, 31 May 2026 00:00:00 +0500</lastBuildDate>
|
<lastBuildDate>Wed, 09 Aug 2026 00:00:00 +0000</lastBuildDate>
|
||||||
<atom:link href="${BASE}/rss.xml" rel="self" type="application/rss+xml"/>
|
<atom:link href="${BASE}/rss.xml" rel="self" type="application/rss+xml"/>
|
||||||
${items}
|
${items}
|
||||||
</channel>
|
</channel>
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
// Генерирует sitemap.xml (работает в dev и prod)
|
// Генерирует sitemap.xml (работает в dev и prod)
|
||||||
export const prerender = true;
|
export const prerender = true;
|
||||||
const BASE = 'https://izhs-dom.ru';
|
const BASE = 'https://www.gvautocollision.com';
|
||||||
|
|
||||||
const pages = [
|
const pages = [
|
||||||
'', 'blog/', 'about/',
|
'',
|
||||||
'blog/vybor-uchastka/', 'blog/fundament-dlya-doma/',
|
'#estimate',
|
||||||
'blog/karkasnyj-dom/', 'blog/krovlya-doma/',
|
'#services',
|
||||||
'blog/inzhenernye-sistemy/', 'blog/otdelka-fasada/',
|
'#gallery',
|
||||||
];
|
];
|
||||||
|
|
||||||
const xml = `<?xml version="1.0" encoding="UTF-8"?>
|
const xml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<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>`;
|
</urlset>`;
|
||||||
|
|
||||||
export function GET() {
|
export function GET() {
|
||||||
|
|||||||