mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-19 18:45:15 +02:00
fix: update URLs to use the "www" subdomain across the application
This commit modifies various metadata and canonical URLs in the SurfSense application to ensure consistency by using "https://www.surfsense.com" instead of "https://surfsense.com". Changes were made in layout files, blog posts, and SEO components to reflect this update.
This commit is contained in:
parent
dc88ce0277
commit
219a5977b7
18 changed files with 105 additions and 39 deletions
|
|
@ -5,12 +5,12 @@ export const metadata: Metadata = {
|
|||
title: "Announcements | SurfSense",
|
||||
description: "Latest product updates, feature releases, and news from SurfSense.",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/announcements",
|
||||
canonical: "https://www.surfsense.com/announcements",
|
||||
},
|
||||
openGraph: {
|
||||
title: "Announcements | SurfSense",
|
||||
description: "Latest product updates, feature releases, and news from SurfSense.",
|
||||
url: "https://surfsense.com/announcements",
|
||||
url: "https://www.surfsense.com/announcements",
|
||||
type: "website",
|
||||
},
|
||||
twitter: {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ import Image from "next/image";
|
|||
import { notFound } from "next/navigation";
|
||||
import { blog } from "@/.source/server";
|
||||
import { BreadcrumbNav } from "@/components/seo/breadcrumb-nav";
|
||||
import { ArticleJsonLd } from "@/components/seo/json-ld";
|
||||
import { ArticleJsonLd, FAQJsonLd } from "@/components/seo/json-ld";
|
||||
import { extractFaqFromBlogPost } from "@/lib/blog-faq";
|
||||
import { formatDate } from "@/lib/utils";
|
||||
import { getMDXComponents } from "@/mdx-components";
|
||||
|
||||
|
|
@ -21,6 +22,8 @@ interface BlogData {
|
|||
author?: string;
|
||||
authorAvatar?: string;
|
||||
tags?: string[];
|
||||
// Populated by Fumadocs when `lastModifiedTime: "git"` is set in source.config.ts.
|
||||
lastModified?: Date;
|
||||
body: React.ComponentType<{
|
||||
components?: Record<string, React.ComponentType>;
|
||||
}>;
|
||||
|
|
@ -50,7 +53,7 @@ export async function generateMetadata(props: {
|
|||
title: `${page.data.title} | SurfSense Blog`,
|
||||
description: page.data.description,
|
||||
alternates: {
|
||||
canonical: `https://surfsense.com/blog/${slug}`,
|
||||
canonical: `https://www.surfsense.com/blog/${slug}`,
|
||||
},
|
||||
openGraph: {
|
||||
title: page.data.title,
|
||||
|
|
@ -78,17 +81,23 @@ export default async function BlogPostPage(props: { params: Promise<{ slug: stri
|
|||
|
||||
const MDX = page.data.body;
|
||||
const date = new Date(page.data.date);
|
||||
const dateModified = page.data.lastModified
|
||||
? new Date(page.data.lastModified).toISOString()
|
||||
: undefined;
|
||||
const faqEntries = await extractFaqFromBlogPost(slug);
|
||||
|
||||
return (
|
||||
<div className="min-h-screen relative pt-20">
|
||||
<ArticleJsonLd
|
||||
title={page.data.title}
|
||||
description={page.data.description}
|
||||
url={`https://surfsense.com/blog/${slug}`}
|
||||
url={`https://www.surfsense.com/blog/${slug}`}
|
||||
datePublished={page.data.date}
|
||||
dateModified={dateModified}
|
||||
author={page.data.author ?? "SurfSense Team"}
|
||||
image={page.data.image ? `https://surfsense.com${page.data.image}` : undefined}
|
||||
image={page.data.image ? `https://www.surfsense.com${page.data.image}` : undefined}
|
||||
/>
|
||||
{faqEntries.length > 0 && <FAQJsonLd questions={faqEntries} />}
|
||||
<div className="max-w-3xl mx-auto px-6 lg:px-10 pt-10 pb-20">
|
||||
<BreadcrumbNav
|
||||
items={[
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ export const metadata: Metadata = {
|
|||
title: "Blog | SurfSense - AI Search & Knowledge Management",
|
||||
description: "Product updates, tutorials, and tips from the SurfSense team.",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/blog",
|
||||
canonical: "https://www.surfsense.com/blog",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ export const metadata: Metadata = {
|
|||
title: "Changelog | SurfSense",
|
||||
description: "See what's new in SurfSense. Latest updates, features, and improvements.",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/changelog",
|
||||
canonical: "https://www.surfsense.com/changelog",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ export const metadata: Metadata = {
|
|||
description:
|
||||
"Get in touch with the SurfSense team for enterprise AI search, knowledge management, or partnership inquiries.",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/contact",
|
||||
canonical: "https://www.surfsense.com/contact",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ export async function generateMetadata({ params }: PageProps): Promise<Metadata>
|
|||
|
||||
const title = buildSeoTitle(model);
|
||||
const description = buildSeoDescription(model);
|
||||
const canonicalUrl = `https://surfsense.com/free/${model.seo_slug}`;
|
||||
const canonicalUrl = `https://www.surfsense.com/free/${model.seo_slug}`;
|
||||
const modelNameLower = model.name.toLowerCase();
|
||||
|
||||
return {
|
||||
|
|
@ -161,7 +161,7 @@ export default async function FreeModelPage({ params }: PageProps) {
|
|||
"@type": "WebApplication",
|
||||
name: `${model.name} Free Chat Without Login - SurfSense`,
|
||||
description,
|
||||
url: `https://surfsense.com/free/${model.seo_slug}`,
|
||||
url: `https://www.surfsense.com/free/${model.seo_slug}`,
|
||||
applicationCategory: "ChatApplication",
|
||||
operatingSystem: "Web",
|
||||
offers: {
|
||||
|
|
@ -173,12 +173,12 @@ export default async function FreeModelPage({ params }: PageProps) {
|
|||
provider: {
|
||||
"@type": "Organization",
|
||||
name: "SurfSense",
|
||||
url: "https://surfsense.com",
|
||||
url: "https://www.surfsense.com",
|
||||
},
|
||||
isPartOf: {
|
||||
"@type": "WebSite",
|
||||
name: "SurfSense",
|
||||
url: "https://surfsense.com",
|
||||
url: "https://www.surfsense.com",
|
||||
},
|
||||
}}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -64,13 +64,13 @@ export const metadata: Metadata = {
|
|||
"notebooklm alternative",
|
||||
],
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/free",
|
||||
canonical: "https://www.surfsense.com/free",
|
||||
},
|
||||
openGraph: {
|
||||
title: "Free AI Chat, No Login Required | SurfSense",
|
||||
description:
|
||||
"Use ChatGPT free online without login. Chat with GPT-4, Claude AI, Gemini and 100+ AI models. Open source NotebookLM alternative.",
|
||||
url: "https://surfsense.com/free",
|
||||
url: "https://www.surfsense.com/free",
|
||||
siteName: "SurfSense",
|
||||
type: "website",
|
||||
images: [
|
||||
|
|
@ -164,8 +164,8 @@ export default async function FreeHubPage() {
|
|||
name: "ChatGPT Free Online Without Login - SurfSense",
|
||||
description:
|
||||
"Use ChatGPT, Claude AI, Gemini and more AI models free online without login or sign-up. Open source NotebookLM alternative with no login required.",
|
||||
url: "https://surfsense.com/free",
|
||||
isPartOf: { "@type": "WebSite", name: "SurfSense", url: "https://surfsense.com" },
|
||||
url: "https://www.surfsense.com/free",
|
||||
isPartOf: { "@type": "WebSite", name: "SurfSense", url: "https://www.surfsense.com" },
|
||||
mainEntity: {
|
||||
"@type": "ItemList",
|
||||
numberOfItems: seoModels.length,
|
||||
|
|
@ -173,7 +173,7 @@ export default async function FreeHubPage() {
|
|||
"@type": "ListItem",
|
||||
position: i + 1,
|
||||
name: m.name,
|
||||
url: `https://surfsense.com/free/${m.seo_slug}`,
|
||||
url: `https://www.surfsense.com/free/${m.seo_slug}`,
|
||||
})),
|
||||
},
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ export const metadata: Metadata = {
|
|||
description:
|
||||
"Explore SurfSense plans and pricing. Start free with 500 pages & $5 in premium credits. Use ChatGPT, Claude AI, and premium AI models. Pay as you go at provider cost.",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/pricing",
|
||||
canonical: "https://www.surfsense.com/pricing",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ export const metadata: Metadata = {
|
|||
title: "Privacy Policy | SurfSense",
|
||||
description: "Privacy Policy for SurfSense application",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/privacy",
|
||||
canonical: "https://www.surfsense.com/privacy",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ export const metadata: Metadata = {
|
|||
title: "Terms of Service | SurfSense",
|
||||
description: "Terms of Service for SurfSense application",
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com/terms",
|
||||
canonical: "https://www.surfsense.com/terms",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ export async function generateMetadata(props: { params: Promise<{ slug?: string[
|
|||
title: `${page.data.title} | SurfSense Docs`,
|
||||
description: page.data.description,
|
||||
alternates: {
|
||||
canonical: `https://surfsense.com/docs${slugPath ? `/${slugPath}` : ""}`,
|
||||
canonical: `https://www.surfsense.com/docs${slugPath ? `/${slugPath}` : ""}`,
|
||||
},
|
||||
openGraph: {
|
||||
title: `${page.data.title} | SurfSense Docs`,
|
||||
|
|
|
|||
|
|
@ -41,9 +41,9 @@ export const viewport: Viewport = {
|
|||
};
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL("https://surfsense.com"),
|
||||
metadataBase: new URL("https://www.surfsense.com"),
|
||||
alternates: {
|
||||
canonical: "https://surfsense.com",
|
||||
canonical: "https://www.surfsense.com",
|
||||
},
|
||||
title: "SurfSense – Open Source, Privacy-Focused NotebookLM Alternative for Teams",
|
||||
description:
|
||||
|
|
@ -90,7 +90,7 @@ export const metadata: Metadata = {
|
|||
title: "SurfSense – Open Source, Privacy-Focused NotebookLM Alternative for Teams",
|
||||
description:
|
||||
"Open source NotebookLM alternative for teams with no data limits. Use ChatGPT, Claude, and any AI model for free.",
|
||||
url: "https://surfsense.com",
|
||||
url: "https://www.surfsense.com",
|
||||
siteName: "SurfSense",
|
||||
type: "website",
|
||||
images: [
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@ export default function robots(): MetadataRoute.Robots {
|
|||
],
|
||||
},
|
||||
],
|
||||
sitemap: "https://surfsense.com/sitemap.xml",
|
||||
sitemap: "https://www.surfsense.com/sitemap.xml",
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue