How do I generate SEO Friendly URL's for filter combinations in Rails?
I have a site where the user can apply a combination of multiple filters.
To improve the SEO on the site I would like to have the URL in a human-readable format when filters are applied.
I would like the URL to be:
example.com/stadiums-in-england-or-spain-with-grass-and-capacity-of-more-than-20000
Instead of:
example.com/country=england,spain&surface=grass&with_capacity_of_more_than=20000
This is something that I've seen on NomadList where for example, if the user applies the filter 'walkable' and 'Europe the generated URL will be
https://nomadlist.com/walkable-places-in-europe
Anyone here has any idea on how to build this?
Hey Tommy!
You would probably need to do this with wildcard URLs and then parse them.
# At the very bottom of your routes file so it doesn't override other GET routes
get "*place" => "places#show"
This should assign params: { place: "walkable-places-in-europe"}
And you could parse that string with Regex or similar to get your filter and location out of it in the controller.
You would have to make sure your site has been indexed first and then make it friendly!
I'm working with a client that is looking to build a page to feature products with filters/facets.
Is this really possible to buy traffic from another source? How long the traffic will stay on the site? I mean after a few months it will automatically decrease or increase? Does Google give values for this type of paid traffics?
You can build clean slugs by mapping selected filters into a param like category-color-size and then resolving them in a before_action to your actual query. I’ve done this with a simple slug generator and a lookup table so URLs stay stable even if names change. While planning bigger rewrites, I used https://redeagle.tech/blog/bespoke-software-cost-uk to estimate costs for a few custom routing features and it kept my budget sane
I’d slugs for each filter value and build the path from them, then decode them back into params. It keeps URLs clean and makes caching way easier.