{"url":"https://php85.gotoand.dev/larsen","date":"2026-06-30","siteName":"Viga 401 - Error 401 | Veebimajutus.ee","overall":45,"reasoning":"PSI mobile 94 indicates excellent code performance, but the HTTP 401 status blocks public access, creating a critical functional failure. Security headers are completely missing (0/100), and accessibility has a serious contrast violation. The site appears to be a staging environment given the 401 challenge and dev subdomain, but for production readiness, these must be fixed.","confidence":"high","fixes":[{"priority":1,"title":"Resolve HTTP 401 Unauthorized Status","impact":"Site Accessibility, SEO","problem":"The server returns a 401 status with Basic Auth challenge (www-authenticate: Basic), blocking public access and failing the PSI http-status-code audit.","solution":"If this is a public site, remove server-side authentication (Basic Auth) from the web server config (e.g., `.htaccess` or Nginx config). If it must remain private, ensure the URL is not indexed and provide a public landing page."},{"priority":1,"title":"Implement Baseline Security Headers","impact":"Transport Security, Clickjacking, MIME Sniffing","problem":"Security Headers score is 0/100; HSTS, X-Frame-Options, and X-Content-Type-Options are missing.","solution":"Add the following headers to the server response:\n```apache\nHeader always set Strict-Transport-Security \"max-age=63072000; includeSubDomains\"\nHeader always set X-Frame-Options \"SAMEORIGIN\"\nHeader always set X-Content-Type-Options \"nosniff\"\n```"},{"priority":2,"title":"Fix Accessibility Violations (Contrast & Landmarks)","impact":"WCAG 1.4.3, 1.3.1, 2.4.1","problem":"axe-core reports 1 serious color-contrast violation and missing main landmark; W3C shows 3 h1 elements.","solution":"- Increase contrast on `.navbar-nav` links to ≥4.5:1.\n- Wrap main content in `<main>` and navigation in `<nav>`.\n- Consolidate to a single `<h1>` per page."},{"priority":2,"title":"Add Missing SEO Meta Tags","impact":"Search Visibility, Indexing","problem":"PSI SEO score 82; missing meta description, canonical URL, and robots.txt.","solution":"Add to `<head>`:\n```html\n<meta name=\"description\" content=\"...\">\n<link rel=\"canonical\" href=\"https://php85.gotoand.dev/larsen\">\n```"},{"priority":3,"title":"Validate HTML Structure","impact":"Browser Compatibility, Maintainability","problem":"W3C Validator reports 6 errors including invalid `action` on forms and `style` in `body`.","solution":"- Remove empty `action` attributes or set to `.`.\n- Move `<style>` blocks to `<head>`.\n- Fix `src` on `<source>` elements to use `srcset` or remove invalid attributes."}],"coverage":{"pct":100,"missing":[]},"psiSnapshot":{"rows":[{"pageUrl":null,"perfMobile":94,"perfDesktop":100,"lcpMobileMs":2441.3907723176903,"lcpDesktopMs":683.3907723599311,"clsMobile":0.002054,"clsDesktop":0.000079}]},"optimizationChecklist":{"items":[{"id":"caching","title":"Page caching plugin / CDN active","status":"fail","detail":"No WordPress cache plugin marker or CDN edge cache detected on the document response.","evidence":[]},{"id":"lazyload","title":"Images lazy-loaded","status":"pass","detail":"All raster images use loading=\"lazy\".","evidence":[]},{"id":"heroEager","title":"Hero image eagerly loaded","status":"warn","detail":"Hero image has no explicit loading or fetchpriority (inferred from DOM order/size — Lighthouse LCP element unavailable). Browser default is eager but adding fetchpriority=\"high\" helps LCP.","evidence":["hero: …iKAkJVZAoSkJCFSSKkpBQBYmiJCRUQaIoCQlVkChKQkIV/D+cxxFa72wHXQAAAABJRU5ErkJggg==","loading: (not set)","fetchpriority: (not set)"]},{"id":"heroBackground","title":"Hero is a real <img> (not a CSS background-image)","status":"n/a","detail":"No CSS background-images detected on raster-image-eligible elements.","evidence":[]},{"id":"responsive","title":"Responsive images (srcset / <picture>)","status":"n/a","detail":"Only 1 raster image on the page — responsive-image rule does not apply.","evidence":[]},{"id":"imageSizes","title":"Reasonable number of image sizes","status":"n/a","detail":"Too few raster images to evaluate srcset width variety.","evidence":[]},{"id":"scriptsFooter","title":"JS scripts not blocking in <head>","status":"n/a","detail":"No external scripts on the page.","evidence":[]}],"summary":{"passed":1,"warned":1,"failed":1,"notApplicable":4},"priorities":[{"title":"Page caching plugin / CDN active","severity":"high","detail":"No WordPress cache plugin marker or CDN edge cache detected on the document response."},{"title":"Hero image eagerly loaded","severity":"medium","detail":"Hero image has no explicit loading or fetchpriority (inferred from DOM order/size — Lighthouse LCP element unavailable). Browser default is eager but adding fetchpriority=\"high\" helps LCP."}]}}