@aurelianspodarec could you share your component class schema?
Based on your example of /blog/dog I would have assumed that "dog" was an article. If "blog" was /animal/dog?color=brown then you are looking for animals that are dogs that also have the category or tag "brown". That said your use of a more singular "dog" is a bit confusing.
I may not be on track at all so disregard if I am missing something but likely this is easily done in a controller action:
public function show($slug, $cat = null){
if($cat){
$comps = Component::where([
['slug' => $slug],
['cat' => $cat]
]->get();
} else {
$comps = Component::where('slug', $slug)->get();
}
return view('componets.show)->with(['components' => $comps];
Not sure this helps. But happy to talk it out.