composer require devio/permalink
php artisan vendor:publish --provider="Devio\Permalink\PermalinkServiceProvider"
php artisan migrate
use Devio\Permalink\Permalink;
Permalink::create([
'slug' => 'about-us',
'route' => 'pages.show',
'parameters' => ['page' => 1],
'title' => 'About Us',
'description' => 'Company overview',
]);
/about-us and confirm resolution. If it 404s, inspect php artisan route:list, the package config, and whether the fallback/catch-all route is registered after your normal routes.model_type/model_id yourself and resolve the model in the controller. Generate slugs on create/update, but keep a manual override for editors.slug, route, parameters, locale, canonical, robots, and redirect fields. Whitelist allowed route names and parameter keys rather than accepting arbitrary values.routes/web.php so existing routes win. Exclude /admin, /api, auth, and asset paths via middleware or prefix checks.lastmod from the related model or permalink update time. Exclude redirects and noindex entries.slug + locale -> route/parameters and invalidate on save/delete. Cache 404s briefly to avoid repeated misses under bot traffic.(slug, locale). Keep a canonical/hreflang strategy in the rendering layer.RefreshDatabase, seed permalinks, and assert status codes, redirects, canonical tags, and 404 behavior. Include tests with route caching enabled.php artisan route:cache may freeze or omit them. Test route:cache/route:clear in CI and document the deploy sequence./admin, /api, or missing assets. Keep it last and constrain it by prefix, middleware, or explicit exclusions.(slug, locale) and decide how soft deletes interact with reuse.Route::has() and expected parameter keys.php artisan route:list, service-provider boot order, middleware groups, and the actual query by slug/locale. For 500s, dump the resolved route/parameters before dispatch.permalinks). Check existing schemas before migrating and confirm the package migrations are safe to rerun in your deployment pipeline.How can I help you explore Laravel packages today?