fulldecent/html-validate-nice-checkers
bug: canonical-link false positive on root URLs with multi-character TLDs (.app, .io, .dev, etc.)
Fermée
#28 ouverte le 24 juin 2026
help wanted
Métriques du dépôt
- Stars
- (2 étoiles)
- Métriques de merge PR
- (Aucune PR mergée en 30 j)
Description
Bug report
The nice-checkers/canonical-link rule incorrectly flags root canonical URLs when the TLD is multi-character (.app, .io, .dev, .ai, etc.).
Root cause
The extension check runs against the full URL string:
if (/\.\w+$/.test(href)) {
https://webscore.app matches because .app satisfies \.\w+$, even though the pathname has no extension.
Suggested fix
Test only url.pathname instead:
const url = new URL(href)
if (/\.\w+$/.test(url.pathname)) {
https://webscore.app has pathname /, so it passes. https://example.com/page.html has pathname /page.html, so extensions are still caught correctly.
Relates to #26