When someone does a search in vBulletin, it saves the search and generates a search.php?searchid=12345 URL. Once that saved search expires, the URL no longer works, and shows a misleading error message-- "Sorry - no matches. Please try some different terms" which is actually not true at all. There are matches, you just tried to view an old, expired search.
This problem can be fixed trivially without rewriting search.php.
Submit the form as a GET request (instead of POST)
Leave the parameters in the URL instead of redirecting to the searchid URL:
Have this: http://www.vbulletin.com/forum/search.php?query=jelsoft&exactname=1&starteronly=0 &forumchoice[]=0&prefixchoice[]=&childforums=1&titleonly=0&showposts=0&searchda te =0&beforeafter=after&sortby=lastpost&sortorder=de s cending&replyless=0&replylimit=0&searchthreadid=0& saveprefs=1&quicksearch=0&searchtype=1&nocache=0&a jax=0
Instead of this: http://www.vbulletin.com/forum/search.php?searchid=8190082
That's it!
vBulletin already reuses searches by using a hash of the query and options to identify stored searches that can be reused. So if someone does an identical search from the search form, instead of using the searchid URL, it will still show the saved search.
So if you allow URLs like seach.php?query=jelsoft&options=x,y,z instead of search.php?searchid=32893298 then,
The URL is more meaningful
If that search is already saved, it still hits cache instead of re-running the search
If the saved search is expired, it can re-run the search instead of showing the user a meaningless and false error page (that there are no results for their search, when there are results)
People can link to searches that will work, whereas currently you can't.