query_posts
should never be used. Right now you are getting pagination urls that are relevent to whatever you feed to the query_posts
but they lack the url of the page.
In general, regardless of the query_posts
issue, pagination in internal loops should use pagination parameters which are different than those used by wordpress core, or in other words, you need to construct the pagination urls yourself, and depending on whether you want the pretty url, might need to add rewrite rulr for it. You might get lucky and be ble to use one of the core paging parameters, but that is hacky (although several answers here recommend doing that, so maybe success rate are better than I think).
What you really should do, as you basically create a new type of archive pages, is to add a rewrite rule for those types of urls, and use the pre_get_posts
filter to properly populate the loop, and template_redirect
to intercept such pages to use some template of your own. This is the cleanest way, but not necessarily the easiest one 🙁