44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const app = express();
|
|
const redirects = [
|
|
['/', 'https://openpanel.dev/'],
|
|
['/docs', 'https://openpanel.dev/docs'],
|
|
['/docs/sdks/script', 'https://openpanel.dev/docs/sdks/script'],
|
|
['/docs/sdks/web', 'https://openpanel.dev/docs/sdks/script'],
|
|
['/docs/sdks/javascript', 'https://openpanel.dev/docs/sdks/node'],
|
|
['/docs/sdks/react', 'https://openpanel.dev/docs/sdks/react'],
|
|
['/docs/sdks/nextjs', 'https://openpanel.dev/docs/sdks/nextjs'],
|
|
['/docs/sdks/remix', 'https://openpanel.dev/docs/sdks/remix'],
|
|
['/docs/sdks/vue', 'https://openpanel.dev/docs/sdks/vue'],
|
|
['/docs/sdks/astro', 'https://openpanel.dev/docs/sdks/astro'],
|
|
['/docs/sdks/react-native', 'https://openpanel.dev/docs/sdks/react-native'],
|
|
['/docs/sdks/node', 'https://openpanel.dev/docs/sdks/node'],
|
|
['/docs/sdks/express', 'https://openpanel.dev/docs/sdks/express'],
|
|
['/docs/sdks/api', 'https://openpanel.dev/docs/api/track'],
|
|
['/docs/sdks/export', 'https://openpanel.dev/docs/api/export'],
|
|
[
|
|
'/docs/self-hosting',
|
|
'https://openpanel.dev/docs/self-hosting/self-hosting',
|
|
],
|
|
];
|
|
|
|
// Handle redirects for all defined routes
|
|
redirects.forEach(([from, to]) => {
|
|
app.get(from, (req, res) => {
|
|
console.log('redirecting', {
|
|
from,
|
|
to,
|
|
});
|
|
|
|
res.redirect(302, to);
|
|
});
|
|
});
|
|
|
|
// Optional: Catch-all route for undefined routes
|
|
app.get('*', (req, res) => {
|
|
console.log('fallback redirect', req.url);
|
|
res.redirect(302, 'https://openpanel.dev/docs');
|
|
});
|
|
|
|
app.listen(3000);
|