feat: add marketing landing pages and tools for dynamic QR codes and analytics
This commit is contained in:
@@ -11,15 +11,15 @@ export function middleware(req: NextRequest) {
|
||||
if (path === '/guide/bulk-qr-code-generation') {
|
||||
return NextResponse.redirect(new URL('/learn/developer', req.url), 301);
|
||||
}
|
||||
if (path === '/guide/qr-code-best-practices') {
|
||||
return NextResponse.redirect(new URL('/learn/basics', req.url), 301);
|
||||
}
|
||||
if (path === '/create-qr') {
|
||||
return NextResponse.redirect(new URL('/dynamic-qr-code-generator', req.url), 301);
|
||||
}
|
||||
|
||||
// Public routes that don't require authentication
|
||||
const publicPaths = [
|
||||
if (path === '/guide/qr-code-best-practices') {
|
||||
return NextResponse.redirect(new URL('/learn/basics', req.url), 301);
|
||||
}
|
||||
if (path === '/create-qr') {
|
||||
return NextResponse.redirect(new URL('/dynamic-qr-code-generator', req.url), 301);
|
||||
}
|
||||
|
||||
// Public routes that don't require authentication
|
||||
const publicPaths = [
|
||||
'/',
|
||||
'/pricing',
|
||||
'/faq',
|
||||
@@ -32,11 +32,11 @@ export function middleware(req: NextRequest) {
|
||||
'/features',
|
||||
// '/guide', // Redirected to /learn/*
|
||||
'/qr-code-erstellen',
|
||||
'/dynamic-qr-code-generator',
|
||||
'/bulk-qr-code-generator',
|
||||
'/qr-code-tracking',
|
||||
'/qr-code-analytics',
|
||||
'/reprint-calculator',
|
||||
'/dynamic-qr-code-generator',
|
||||
'/bulk-qr-code-generator',
|
||||
'/qr-code-tracking',
|
||||
'/qr-code-analytics',
|
||||
'/reprint-calculator',
|
||||
'/barcode-generator',
|
||||
'/custom-qr-code-generator',
|
||||
'/manage-qr-codes',
|
||||
@@ -46,20 +46,21 @@ export function middleware(req: NextRequest) {
|
||||
'/display',
|
||||
'/contact',
|
||||
'/about',
|
||||
'/learn',
|
||||
'/use-cases',
|
||||
'/authors',
|
||||
'/press',
|
||||
'/testimonials',
|
||||
'/qr-code-for-marketing-campaigns',
|
||||
'/qr-code-for',
|
||||
'/use-cases/flyer-qr-codes',
|
||||
'/use-cases/packaging-qr-codes',
|
||||
'/use-cases/real-estate-sign-qr-codes',
|
||||
'/use-cases/feedback-qr-codes',
|
||||
'/use-cases/payment-qr-codes',
|
||||
'/use-cases/coupon-qr-codes',
|
||||
];
|
||||
'/learn',
|
||||
'/use-cases',
|
||||
'/authors',
|
||||
'/press',
|
||||
'/testimonials',
|
||||
'/qr-code-for-marketing-campaigns',
|
||||
'/qr-code-for',
|
||||
'/qr-code-print-size-guide',
|
||||
'/use-cases/flyer-qr-codes',
|
||||
'/use-cases/packaging-qr-codes',
|
||||
'/use-cases/real-estate-sign-qr-codes',
|
||||
'/use-cases/feedback-qr-codes',
|
||||
'/use-cases/payment-qr-codes',
|
||||
'/use-cases/coupon-qr-codes',
|
||||
];
|
||||
|
||||
// Check if path is public
|
||||
const isPublicPath = publicPaths.some(p => path === p || path.startsWith(p + '/'));
|
||||
@@ -108,4 +109,4 @@ export const config = {
|
||||
*/
|
||||
'/((?!_next/static|_next/image|favicon.ico|logo.svg|og-image.png).*)',
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user