从当前URL删除默认文档

时间:2017-06-04 20:20:21

标签: vbscript asp-classic

我使用以下代码获取当前页面的URL。

thispage ="http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") & "?" & Request.Querystring

我想检查用户是否在URL末尾键入了默认文档(index.asp)并将其删除(通过重定向到地址栏中没有默认文档的干净URL)。

但是,即使未在地址栏中输入,此代码也始终包含默认文档,例如当地址栏中有http://example.com/index.asp时,上面的代码会返回http://example.com

如何编辑上述代码以区分这些网址?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

url = Request.ServerVariables("URL")
url = Left( url, Len( url, Right( url, InStrRev( url, "/" ) - 1 )
thispage ="http://" & Request.ServerVariables("SERVER_NAME") & url & "/?" & Request.Querystring

答案 1 :(得分:1)

在您不知道适用的默认文档是什么的环境中,这是一项复杂的任务,但我认为在您的情况下它总是index.asp

如果是这样,您可以使用以下内容完成此操作。

defaultFile = "/index.asp" ' leading slash is mandatory
reqUrl = Request.ServerVariables("URL")
reqQS = Request.ServerVariables("QUERY_STRING")

'put a leading question mark if there's a query
If reqQS <> "" Then
    reqQS = "?" & reqQS
End If

'check if URL ends with "/index.asp" (case-insensitive comparison should be made)
If StrComp(Right(reqUrl, Len(defaultFile)), defaultFile, vbTextCompare) = 0 Then
    ' remove from reqUrl by preserving leading slash
    reqUrl = Left(reqUrl, Len(reqUrl) - Len(defaultFile) + 1)
End If

thispage = "http://" & Request.ServerVariables("SERVER_NAME") & reqUrl & reqQS