feat: extract shop from mp/shop — initial libreshop/shop
Some checks failed
Build and publish / build (push) Failing after 19s
Some checks failed
Build and publish / build (push) Failing after 19s
Source moved verbatim from mp/shop/ on 2026-04-29; mp was the first concrete adapter consuming the libreshop toolkit. Builds and publishes git.librete.ch/libreshop/shop on every main / v* push via the standard .gitea/workflows/build.yml shared across libreshop components.
This commit is contained in:
29
server/middleware/redirects.ts
Normal file
29
server/middleware/redirects.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
// 301 Redirects for old URLs to new semantic URLs
|
||||
// These redirects ensure SEO continuity and prevent broken links
|
||||
|
||||
const REDIRECTS: Record<string, string> = {
|
||||
// Website pages (old ID-based URLs)
|
||||
"/website/19": "/about",
|
||||
"/website/20": "/oeffnungszeiten",
|
||||
"/website/21": "/anfahrt",
|
||||
|
||||
// Legal pages (old /legal/[content] URLs)
|
||||
"/legal/imprint": "/impressum",
|
||||
"/legal/contact": "/kontakt",
|
||||
"/legal/terms": "/agb",
|
||||
"/legal/privacy": "/datenschutz",
|
||||
"/legal/delivery": "/versand",
|
||||
"/legal/payment": "/zahlung",
|
||||
};
|
||||
|
||||
export default defineEventHandler((event) => {
|
||||
const path = event.path;
|
||||
|
||||
// Check if the current path matches any redirect
|
||||
const redirectTo = REDIRECTS[path];
|
||||
|
||||
if (redirectTo) {
|
||||
// 301 Permanent Redirect
|
||||
return sendRedirect(event, redirectTo, 301);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user