Request parameters in $_GET do not match URL called

WordPress will typically filter off query arguments unless you tell it about those arguments and ask it not to.

From this older tutorial, you can see how to add a new query variable to WordPress (so it won’t get stripped out):

add_filter('query_vars', 'parameter_queryvars' );
function parameter_queryvars( $qvars )
{
    $qvars[] = 'myvar';
    return $qvars;
}

There is an alternative suggestion in the first answer of this question:

//add author_more to query vars
function add_author_more_query_var() {
    global $wp;
    $wp->add_query_var('author_more');
}

add_filter('init', 'add_author_more_query_var');

Once you do that, though, you need to also be aware of some reserved terms within WordPress. There are just some terms you can’t use for custom data because they’re already used elsewhere. The full list of reserved terms is in the Codex.

A quick glance shows that “type” is in the reserved list … which could be why it’s changing when you try to use it.