diff --git a/prerender/seo.cjs b/prerender/seo.cjs index 625187b..9af69a5 100644 --- a/prerender/seo.cjs +++ b/prerender/seo.cjs @@ -211,6 +211,9 @@ const generateHomepageMetaTags = (baseUrl, config) => { const description = config.descriptions.long; const keywords = config.keywords; const imageUrl = `${baseUrl}${config.images.logo}`; + + // Ensure URLs are properly formatted + const canonicalUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; return ` @@ -221,7 +224,7 @@ const generateHomepageMetaTags = (baseUrl, config) => { - + @@ -233,39 +236,39 @@ const generateHomepageMetaTags = (baseUrl, config) => { - + `; }; const generateHomepageJsonLd = (baseUrl, config, categories = []) => { + // Ensure URLs are properly formatted + const canonicalUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; + const logoUrl = `${canonicalUrl}${config.images.logo}`; const websiteJsonLd = { "@context": "https://schema.org/", "@type": "WebSite", name: config.brandName, - url: baseUrl, + url: canonicalUrl, description: config.descriptions.long, publisher: { "@type": "Organization", name: config.brandName, - url: baseUrl, + url: canonicalUrl, logo: { "@type": "ImageObject", - url: `${baseUrl}${config.images.logo}`, + url: logoUrl, }, }, potentialAction: { "@type": "SearchAction", - target: { - "@type": "EntryPoint", - urlTemplate: `${baseUrl}/search?q={search_term_string}`, - }, + target: `${canonicalUrl}/search?q={search_term_string}`, "query-input": "required name=search_term_string", }, mainEntity: { "@type": "WebPage", name: "Sitemap", - url: `${baseUrl}/sitemap`, + url: `${canonicalUrl}/sitemap`, description: "Vollständige Sitemap mit allen Kategorien und Seiten", }, sameAs: [ @@ -280,9 +283,9 @@ const generateHomepageJsonLd = (baseUrl, config, categories = []) => { "name": config.brandName, "alternateName": config.siteName, "description": config.descriptions.long, - "url": baseUrl, - "logo": `${baseUrl}${config.images.logo}`, - "image": `${baseUrl}${config.images.logo}`, + "url": canonicalUrl, + "logo": logoUrl, + "image": logoUrl, "telephone": "015208491860", "email": "service@growheads.de", "address": { @@ -299,17 +302,16 @@ const generateHomepageJsonLd = (baseUrl, config, categories = []) => { "longitude": "13.727215" }, "openingHours": [ - "Mo-Fr 10:00-20:00", - "Sa 11:00-19:00" + "Mo-Fr 10:00:00-20:00:00", + "Sa 11:00:00-19:00:00" ], "paymentAccepted": "Cash, Credit Card, PayPal, Bank Transfer", "currenciesAccepted": "EUR", "priceRange": "€€", - "serviceArea": { + "areaServed": { "@type": "Country", "name": "Germany" }, - "areaServed": "DE", "contactPoint": [ { "@type": "ContactPoint", @@ -319,8 +321,8 @@ const generateHomepageJsonLd = (baseUrl, config, categories = []) => { "hoursAvailable": { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], - "opens": "10:00", - "closes": "20:00" + "opens": "10:00:00", + "closes": "20:00:00" } }, { @@ -400,7 +402,7 @@ const generateHomepageJsonLd = (baseUrl, config, categories = []) => { "item": { "@type": "Thing", "name": category.name, - "url": `${baseUrl}/Kategorie/${category.seoName}` + "url": `${canonicalUrl}/Kategorie/${category.seoName}` } })) }; @@ -532,7 +534,10 @@ const generateXmlSitemap = (allCategories = [], allProducts = [], baseUrl) => { const generateKonfiguratorMetaTags = (baseUrl, config) => { const description = "Unser interaktiver Growbox Konfigurator hilft dir dabei, das perfekte Indoor Growing Setup zusammenzustellen. Wähle aus verschiedenen Growbox-Größen, Beleuchtung, Belüftung und Extras. Bundle-Rabatte bis 36%!"; const keywords = "Growbox Konfigurator, Indoor Growing, Growzelt, Beleuchtung, Belüftung, Growbox Setup, Indoor Garden"; - const imageUrl = `${baseUrl}${config.images.placeholder}`; // Placeholder image + + // Ensure URLs are properly formatted + const canonicalUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; + const imageUrl = `${canonicalUrl}${config.images.placeholder}`; // Placeholder image return ` @@ -543,7 +548,7 @@ const generateKonfiguratorMetaTags = (baseUrl, config) => { - + @@ -555,15 +560,17 @@ const generateKonfiguratorMetaTags = (baseUrl, config) => { - + `; }; const generateRobotsTxt = (baseUrl) => { + // Ensure URLs are properly formatted + const canonicalUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; const robotsTxt = `User-agent: * Allow: / -Sitemap: ${baseUrl}/sitemap.xml +Sitemap: ${canonicalUrl}/sitemap.xml Crawl-delay: 0 `;