Update: Here is the code i am using in my blog:
<%
Dim RQ, P, ID, ID2
RQ = Request.QueryString
ErrorFound = False
P = Instr(RQ,"article/")
If P > 0 Then
DoProperLink 8, "template_permalink"
Else
P = Instr(RQ, "page/")
If P > 0 Then
DoProperLink 5, "template"
Else
P = Instr(RQ, "cat/")
If P > 0 Then
DoProperLink 4, "template_archives_cat"
Else
P = Instr(RQ, "archives/")
If P > 0 Then
DoProperLink 9, "template_archives"
Else
P = Instr(RQ, "author/")
If P > 0 Then
DoProperLink 7, "template_author"
Else
ErrorFound = True
End If
End If
End If
End If
End If
function DoProperLink(num, aspPage)
Session("ID") = ""
Session("ID2") = ""
RQ = Mid(RQ,P+num)
P = Instr(RQ, "/")
If P > 0 Then
ID = Left(RQ,P-1)
Session("ID") = ID
RQ = Mid(RQ,P+1)
If aspPage = "template_archives" Then
P = Instr(RQ, "/")
If P > 0 Then
ID2 = Left(RQ,P-1)
Session("ID2") = ID2
Else
ErrorFound = True
End If
End If
Else
ErrorFound = True
End If
If Not ErrorFound Then
Server.Transfer "/" & aspPage & ".asp"
Else
Response.Status = "404 File Not Found"
Response.End
End If
end function
%>
And on each page, i've included this code:
<%
Dim getID
getID = Session("ID")
if getID = "" Then getID = Request.QueryString("id")
%>
You must check if the request of the querystring is for "id". If not, change it (e.g. chosenYear, PageName, etc).
For example, in the "template_archives" file, i've used:
<%
Dim getID
getID = Session("ID")
if getID = "" Then getID = Request.QueryString("chosenYear")
Dim getID2
getID2 = Session("ID2")
if getID2 = "" Then getID = Request.QueryString("chosenMonth")
%>
And replace all the "request.querystring" in the page for the new variables.
Note: i've used this in BP Blog 8.0.2, which is the one i am using right now. I guess it must be easy to apply it on version 9 also.