Use pretty URLs for your Laravel project by implementing slugs and avoid the integer id as the route key.
The following 2 URL examples are for the route
/location/{location}
This first one is the default where the route key is the id
domain.com/location/34
It’s not a good practice for SEO nor is it human readable.
Instead of this you can use a “slug” for the location title. A slug is a string that is URL safe with dashes instead of spaces.
Los Angeles has a slug of los-angeles, whilst North Las Vegas has a slug north-las-vegas
This second URL is using the slug as the route key
domain.com/location/los-angeles
You do this by customizing the key with getRouteKeyName
function in the models class
public function getRouteKeyName(): string { return 'slug'; }
It is returning “slug” because that is the database column I want the route key to be.
If the slug isn’t found then an HTTP 404 error will be thrown.