Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Laravel Canonical

Laravel Canonical Laravel Package

fkrzski/laravel-canonical

A Laravel package for adding canonical URL support to your application. It helps define and render canonical links, reducing duplicate-content SEO issues across pages with multiple URLs, and integrates simply with Laravel views and routing.

View on GitHub
Deep Wiki
Context7

fkrzski/laravel-canonical is a lightweight Laravel package for managing canonical URLs in your applications. It helps prevent duplicate-content issues by generating consistent <link rel="canonical"> tags, with sensible defaults and simple configuration for per-route or global canonical definitions.

  • Automatic canonical tag rendering for configured routes
  • Configurable URL resolution and tag placement
  • Blade directive and helper support for custom pages
  • Middleware-friendly integration with existing route groups
  • Compatible with modern Laravel versions
Frequently asked questions about Laravel Canonical
What does fkrzski/laravel-canonical do?
It is a Laravel package focused on a single responsibility: managing canonical URLs and outputting SEO-friendly canonical tags (link rel="canonical") for your pages. By centralising canonical generation it helps you avoid duplicate-content issues and keeps URL handling consistent instead of scattering hand-rolled canonical logic across views. It sits at the presentation layer alongside meta-tag and sitemap concerns rather than replacing them.
How do I install fkrzski/laravel-canonical in a Laravel app?
Install it with Composer using composer require fkrzski/laravel-canonical. The package follows standard Laravel package conventions with PSR-4 autoloading and service provider auto-discovery, so no manual provider registration is normally needed. After installing, publish its config file if you want to customise behaviour, then reference the package's directive or helper in your base Blade layout. Expected effort is hours rather than days.
Which Laravel and PHP versions does the package support?
It is a conventional Laravel package on a 1.x release line, which by convention implies API stability, but the exact framework and PHP constraints are declared in its composer.json. Check that file or the Packagist page against your application's Laravel and PHP versions before adopting it, and confirm whether the constraint range already covers your next planned Laravel major. Pinning to a tested range in your own composer.json is the safe approach.
How do I render the canonical tag in my Blade layout?
Based on the package's scope, you add its Blade directive or helper to the head section of your base layout, typically right next to your other meta tags. The package emits a link rel="canonical" element, so you should apply it once in the layout rather than per-view to avoid duplicate tags. Verify the rendered markup on a few representative routes after wiring it in, and publish the config if you need to control how the URL is built.
Does it handle multi-domain, multi-locale, and paginated or filtered URLs?
These are the classic canonical edge cases, and you should not assume they are handled automatically. Before relying on the package, test how it resolves absolute URLs across multiple hosts, locale prefixes, pagination pages and filtered listings, since a wrong canonical is silent in application logs and only visible to crawlers. If it does not normalise a given case, the safest pattern is to supply the canonical URL explicitly for those routes rather than trusting automatic resolution.
Will it conflict with my existing SEO or meta tag package?
The real architectural hazard with a canonical package is duplication, not its internals: if your application or another SEO package already emits a canonical tag, you can end up with two conflicting link elements. Run the package in parallel with your existing handling on staging and diff the emitted canonical tags route by route. Only remove hand-rolled logic once parity is confirmed, and pick a single source of truth for canonical URLs.
Does the package require database migrations or queue workers?
No. It is a narrow, presentation-layer package with no implied migrations and no queue workers, so there is nothing to schedule or backfill. Integration is limited to installing the Composer dependency, optionally publishing config, and applying the directive in your layout. That keeps the operational footprint effectively zero.
Is laravel-canonical safe to use in production?
Technical risk is low: it is a 1.x package with a small surface area, and patch releases have shipped without runtime changes, which signals API stability. The risk is indirect rather than build-breaking, namely that an incorrect canonical URL is an SEO defect that surfaces late and is not caught by typical application tests. Add a simple assertion on the emitted canonical tag in your test suite and audit the output across your most important routes before going live.
Is the package actively maintained, and what is the release cadence?
It is a single-maintainer package, which is a low-blast-radius but hard-to-replace dependency if it is abandoned, so treat responsiveness as part of your evaluation. The recent 1.4.3 release restructured the changelog to Keep a Changelog 1.1.0 and moved to an in-PR [Unreleased] convention, which is a positive indicator of release discipline. Note that CHANGELOG.md is now excluded via export-ignore, so it is not present under vendor and teams tracking changes should read GitHub releases. Have a fork-and-own fallback in mind given the bus factor.
How do I test that the canonical URLs are correct?
Canonical emission is usually untested in application suites, so regressions tend to surface late; add feature tests that assert the expected link rel="canonical" value on your key routes. Cover the awkward cases explicitly: multiple domains, locale prefixes, paginated pages and filtered or sorted listings. A staging diff against your previous hand-rolled output is a practical way to confirm parity before switching over.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections