Skip to content

Commit 8da7a18

Browse files
authored
Merge pull request #57 from DefGuard/meta
metatags fix 1
2 parents bbd1c1d + f65eae6 commit 8da7a18

File tree

2 files changed

+51
-9
lines changed

2 files changed

+51
-9
lines changed

src/layouts/BaseLayout.astro

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,40 @@ const { url, title, description, featuredImage, imageWidth, imageHeight } = Astr
3030
content="width=device-width, initial-scale=1.0, viewport-fit=cover"
3131
/>
3232
<meta name="generator" content={Astro.generator} />
33-
<title>defguard - Zero-Trust WireGuard® 2FA/MFA VPN</title>
33+
<title>{title}</title>
34+
35+
<!-- Basic SEO -->
36+
<meta name="description" content={description} />
37+
<meta name="keywords" content="defguard, zero-trust, WireGuard, VPN, 2FA, MFA, cybersecurity, enterprise security" />
38+
39+
<!-- Open Graph / Facebook -->
40+
<meta property="og:type" content="website" />
41+
<meta property="og:url" content={url} />
3442
<meta property="og:title" content={title} />
3543
<meta property="og:description" content={description} />
36-
<meta name="description" content={description} />
37-
<meta property="og:image" content={"http://" + featuredImage} />
38-
<meta property="og:image:secure_url" content={"https://" + featuredImage} />
44+
<meta property="og:image" content={featuredImage.startsWith('http') ? featuredImage : `https://${featuredImage}`} />
45+
<meta property="og:image:secure_url" content={featuredImage.startsWith('http') ? featuredImage : `https://${featuredImage}`} />
3946
<meta property="og:image:type" content="image/png" />
4047
<meta property="og:image:width" content={imageWidth} />
4148
<meta property="og:image:height" content={imageHeight} />
42-
<meta property="og:url" content={url} />
49+
<meta property="og:site_name" content="defguard" />
50+
51+
<!-- Twitter Card -->
52+
<meta name="twitter:card" content="summary_large_image" />
53+
<meta name="twitter:url" content={url} />
54+
<meta name="twitter:title" content={title} />
55+
<meta name="twitter:description" content={description} />
56+
<meta name="twitter:image" content={featuredImage.startsWith('http') ? featuredImage : `https://${featuredImage}`} />
57+
<meta name="twitter:site" content="@defguard_net" />
58+
<meta name="twitter:creator" content="@defguard_net" />
59+
60+
<!-- LinkedIn -->
61+
<meta property="og:locale" content="en_US" />
62+
63+
<!-- Additional SEO -->
64+
<meta name="robots" content="index, follow" />
65+
<meta name="author" content="defguard team" />
66+
<link rel="canonical" href={url} />
4367
<!-- schema.org -->
4468
<slot name="schema" />
4569
<!-- Favicons -->

src/pages/blog/[slug].astro

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,22 @@ const url = `https://defguard.net/blog/${entry.slug}`;
3535
// Get image from frontmatter or extract from content
3636
const content = entry.body;
3737
const imageMatch = content.match(/!\[.*?\]\((.*?)\)/);
38+
// Fix image URL construction - don't double-prefix with domain
3839
const imageUrl = entry.data.image
39-
? `https://defguard.net${entry.data.image}`
40+
? (entry.data.image.startsWith('http') ? entry.data.image : `https://defguard.net${entry.data.image}`)
4041
: imageMatch
41-
? `https://defguard.net${imageMatch[1]}`
42-
: "https://defguard.net/images/png/defguard.png";
42+
? (imageMatch[1].startsWith('http') ? imageMatch[1] : `https://defguard.net${imageMatch[1]}`)
43+
: "defguard.net/images/png/defguard.png";
44+
45+
// Generate relevant tags for blog post
46+
const blogTags = [
47+
"defguard",
48+
"blog",
49+
"cybersecurity",
50+
"vpn",
51+
"zero-trust",
52+
...(entry.data.tags || []),
53+
];
4354
4455
// Check if case study metadata exists
4556
const hasCaseStudy =
@@ -53,8 +64,15 @@ const hasCaseStudy =
5364
featuredImage={imageUrl}
5465
imageWidth="1200"
5566
imageHeight="630"
56-
tags={[]}
67+
tags={blogTags}
5768
>
69+
<!-- Blog-specific meta tags -->
70+
<meta slot="schema" property="og:type" content="article" />
71+
<meta slot="schema" property="article:published_time" content={entry.data.publishDate.toISOString()} />
72+
{entry.data.author && <meta slot="schema" property="article:author" content={entry.data.author} />}
73+
<meta slot="schema" property="article:section" content="Technology" />
74+
{blogTags.map(tag => <meta slot="schema" property="article:tag" content={tag} />)}
75+
5876
<Navigation activeSlug="/blog/" />
5977

6078
<main id="blog-post-page">

0 commit comments

Comments
 (0)