Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/Schuly.Frontend/public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
User-agent: *
Allow: /login
Allow: /register
Disallow: /

Sitemap: https://schuly.dev/sitemap.xml
19 changes: 16 additions & 3 deletions src/Schuly.Frontend/src/app/app.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Component, inject } from '@angular/core';
import { Meta } from '@angular/platform-browser';
import { NavigationEnd, Router, RouterOutlet } from '@angular/router';
import { HlmToasterImports } from '@spartan-ng/helm/sonner';

// Only the sign-in and register pages may show up in search; everything else is behind a login or a one-off link.
const INDEXABLE = new Set(['/login', '/register']);

@Component({
selector: 'app-root',
imports: [RouterOutlet, HlmToasterImports],
Expand All @@ -10,4 +14,13 @@ import { HlmToasterImports } from '@spartan-ng/helm/sonner';
<hlm-toaster />
`,
})
export class App {}
export class App {
constructor() {
const meta = inject(Meta);
inject(Router).events.subscribe((e) => {
if (!(e instanceof NavigationEnd)) return;
const path = e.urlAfterRedirects.split(/[?#]/)[0];
meta.updateTag({ name: 'robots', content: INDEXABLE.has(path) ? 'index, follow' : 'noindex, nofollow' });
});
}
}
3 changes: 2 additions & 1 deletion src/Schuly.Frontend/src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<html lang="de">
<head>
<meta charset="utf-8">
<title>Schuly</title>
<title>Schuly – Web-App</title>
<meta name="description" content="Melde dich bei Schuly an: Noten, Absenzen, Stundenplan und mehr im Browser.">
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
Expand Down
Loading