asignua/filament-redirects
Asignua Filament Redirects is a Filament plugin for managing URL redirects directly from your admin panel. Create and edit 301/302 redirects, handle incoming requests with middleware, and keep your Laravel site's links organized without leaving Filament.
redirects.gone_status), query-string preservation (redirects.preserve_query), and fragment handling. This supports roadmap items like URL restructures, content retirement, product/category sunsets, and domain or section migrations without a bespoke engineering project each time.de/aktion on an en row served as /de/aktion, with unprefixed languages reached by full address from the root) is a real product capability: it unblocks opening new locales or re-pointing existing localized URLs without a routing rewrite.redirects:recheck still walks all of it. That is a decision point on log retention policy and on whether the panel is safe for daily editor use on high-traffic sites.display() as exact inverse of normalize(), unchanged()), afterCommit cache flushing, and normalized-length validation (191 chars, raising ValidationException instead of a SQL error). These are silent-data-corruption and stale-cache classes of bug — worth a pinning and regression-test decision, not a blocker.Consider adoption when most of these hold:
?, #, https:/-looking inputs from logs, language-prefixed sources), and a plan to re-verify on each patch.Look elsewhere when:
To executives: We currently treat broken URLs as engineering interrupts. This package turns redirect management into an editorial workflow with a built-in record of what broke and why — protecting search ranking and paid landing pages during site changes, and removing a recurring tax on the engineering team. The v1.0.2 release is a hardening release: no new surface area, but fixes for stale caching after failed saves, mishandled paths containing spaces, ? or #, and cross-language redirects. Those are the failure modes that quietly lose traffic, and they're being closed. Cost is a contained integration plus a documented operating routine for the 404 log; risk is moderate-low, mitigated by pinning the version and testing our real URL shapes before rollout.
To engineering: This replaces the custom middleware, path-normalization, cache-map, and admin CRUD we'd otherwise write and maintain. The 1.0.2 changes to note in review: canonical/display round-tripping is now exact, so stored paths survive the edit form unchanged; cache invalidation moved to afterCommit on model saved/deleted listeners and RedirectRepository, so redirects written inside a host transaction won't leave a permanently stale map; target decoding no longer over-decodes %3F/%23/%25 and leaves query and fragment intact; preserve_query now appends before a #fragment; entity bindings are dropped when a target becomes external or Gone; source length (191) is enforced on the normalized path with a ValidationException rather than a SQL error; bulk creation now requires a single language per batch; and the panel's "Recheck" samples the 2,000 most recent rows while redirects:recheck still covers the full log. Behavioral changes to normalization, binding cleanup, and bulk validation are worth a regression pass on existing data — plan a backfill/verification script for stored old_path values that assumed the old non-inverse display() behavior.
To the operating owner: Expect a weekly rhythm: triage the 404 log, create redirects or mark Gone (410 by default via redirects.gone_status), and run redirects:recheck on a schedule rather than leaning on the panel button for full coverage.
How can I help you explore Laravel packages today?