If the search finds matches it will display the correct page, but bear in mind the search by default looks at posts and the query at that point is for the current page, so you'll not see anything but the page, even though you've requested a search and it's found matches. You'll see a 404 when the search didn't find matches, the page when it does..
Are you attaching a page templae to this page?
Consider this, when you ask for a page, ie. example.com/dc, you're actually just asking for .. example.com/?pagename=dc
Now when you append a search onto that URL you're asking for a single page and a search (remember the search looks at posts). The search will naturally return a 404 page when it doesn't find matches, that's standard behaviour.
What i think you should be doing here is not using the WordPress search query var, but use your own, so WordPress doesn't sling you over to a 404 page when the search doesn't get a result..
If you do something like this..
example.com/dc/?my_query_var=some_term_that_doesnt_exist
or
example.com/?pagename=dc&my_query_var=some_term_that_doesnt_exist
Nothing will happen, you'll remain on the /dc/ page, you can then do anything you like with the incoming query parameters without worrying about being redirected to a 404.
Hope that helps.. :)