For the sake of simplicity, I suggest either:
1. Buying the ISAPI extension (it may be worth the initial investment to avoid all the hassle and work)
2. Write your own ISAPI extension (this depends on whether you have the skillset to do so or not)
But... there are some more esoteric ways to (kinda) achieve this using just ASP:
1. Error Page
Warning: This will create an overhead in the execution process
Essentially, just create an ASP page that will do all the controlling of the page execution (e.g. Server.Transfer/Execute etc). Then set this as the 404 custom error page. You will need to fiddle with the http response status code too - you don't want to send back a 404 for what is actually a valid page.
2. Create Physical Directories
Warning: This gets a bit messy when managing the placeholder files
Simple... create the actual path you want, then create a placeholder "default" document that simple does a server.transfer/execute/whatever to a controller file, that then serves the content. Problem is that all the placeholder files are likely to become out of date at some point, so you'll need a process to replace them with version changes. You also want to put this pseudo-structure inside it's own dir, so not to mess up your main site.. e.g.
pages/this/is/the/path/to/your/content/no/5/
3. Pseudo-ReWrite
Warning: This still requires the '?', therefore if you are aiming to remove this querystring indicator for SEO purposes, then this isn't for you
Using a Controller Page as the default page for the website (e.g. index.asp, default.asp, or whatever), simply pass a raw querystring to the base url prefixed with '?' e.g.:
Then access this using [tt]Request.QueryString()[/tt], which will give you the raw querystring.
Please Note that none of these 3 options are perfect for the job - you are better off using an ISAPI extension to handle the request at the appropriate stage of the pipeline.
If you don't mind the '?' char being there, then option 3 would be the most efficient and easiest to maintain. Despite lots of bad press, I am not convinced that the ? character would prevent crawling of your content, even with the normal querystring structure (to some degree), so if you are aiming to do this for ease of use by humans, then this option would be a prime candidate.
In fact - I would recommend doing the whole thing in ASP.NET.. but it sounds like this is not an option for you out of preference.
Hope that helps.
A smile is worth a thousand kind words. So smile, it's easy! 