initial commit: rocket.new export of broadcastbeat
This commit is contained in:
133
next.config.mjs
Normal file
133
next.config.mjs
Normal file
@@ -0,0 +1,133 @@
|
||||
import { imageHosts } from './image-hosts.config.js';
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
productionBrowserSourceMaps: true,
|
||||
distDir: process.env.DIST_DIR || '.next',
|
||||
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
|
||||
eslint: {
|
||||
ignoreDuringBuilds: true,
|
||||
},
|
||||
|
||||
images: {
|
||||
remotePatterns: imageHosts,
|
||||
formats: ['image/avif', 'image/webp'],
|
||||
minimumCacheTTL: 86400,
|
||||
deviceSizes: [640, 750, 828, 1080, 1200, 1920],
|
||||
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
|
||||
},
|
||||
|
||||
// Performance: compress responses
|
||||
compress: true,
|
||||
|
||||
// Performance: power headers for caching static assets
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: '/assets/:path*',
|
||||
headers: [
|
||||
{ key: 'Cache-Control', value: 'public, max-age=31536000, immutable' },
|
||||
],
|
||||
},
|
||||
{
|
||||
source: '/_next/static/:path*',
|
||||
headers: [
|
||||
{ key: 'Cache-Control', value: 'public, max-age=31536000, immutable' },
|
||||
],
|
||||
},
|
||||
{
|
||||
source: '/_next/image/:path*',
|
||||
headers: [
|
||||
{ key: 'Cache-Control', value: 'public, max-age=86400, stale-while-revalidate=604800' },
|
||||
],
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
async redirects() {
|
||||
return [
|
||||
// Root redirect
|
||||
{
|
||||
source: '/',
|
||||
destination: '/home-page',
|
||||
permanent: false,
|
||||
},
|
||||
// WordPress admin redirects for broadcastbeat.com (301 permanent)
|
||||
{
|
||||
source: '/wp-admin',
|
||||
destination: '/admin',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-admin/',
|
||||
destination: '/admin',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-admin/post-new.php',
|
||||
destination: '/contributor',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-admin/edit.php',
|
||||
destination: '/admin/articles',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-admin/profile.php',
|
||||
destination: '/account',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-login.php',
|
||||
destination: '/login',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/wp-login.php/:path*',
|
||||
destination: '/login',
|
||||
permanent: true,
|
||||
},
|
||||
// Catch-all for any other wp-admin sub-paths
|
||||
{
|
||||
source: '/wp-admin/:path*',
|
||||
destination: '/admin',
|
||||
permanent: true,
|
||||
},
|
||||
// AV Beat dashboard redirect (avbeat.com/wp-admin/ → unified dashboard)
|
||||
// These are handled by the same Next.js app when serving avbeat.com
|
||||
{
|
||||
source: '/avbeat/wp-admin',
|
||||
destination: '/admin',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/avbeat/wp-admin/',
|
||||
destination: '/admin',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/avbeat/wp-login.php',
|
||||
destination: '/login',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/avbeat/wp-login.php/:path*',
|
||||
destination: '/login',
|
||||
permanent: true,
|
||||
},
|
||||
// Login aliases
|
||||
{
|
||||
source: '/login',
|
||||
destination: '/login',
|
||||
permanent: false,
|
||||
},
|
||||
];
|
||||
}
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
Reference in New Issue
Block a user