Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Canonical URLs: Managing Duplicate Content and the Canonical Google Chooses
rel=canonical is a signal, not a command: Google picks the URL on which redirects, canonicals, the sitemap and internal links agree. We write a canonical tag helper in ASP.NET Core that ignores the Host header and drops needless parameters, and look at the Link header for PDFs, a single canonical in Angular SSR and Google's December 2025 JavaScript rule, with real outputs.
"Why Isn't My Page Indexed?" Diagnosing Indexing Problems Step by Step
For a page that isn't indexed, ask in order: does Google know the URL, does robots.txt allow it, does it return 200, is there a noindex, does the canonical point to itself, is the content real; the first no is where the problem is. We cover the diagnosis tree, a .NET 10 check tool that runs locally, the robots.txt and noindex conflict, and the Crawled/Discovered – currently not indexed states.