12

我正在开发经典的 asp 应用程序。我在某些页面上使用了 URL 重写。

如何在经典 asp 中获取页面的当前 url?

示例: http ://www.site.com/page.asp ---> IIS 中的 url 重写 ---> http://www.site.com/home/page

所以在这里我想要页面的当前网址,即http://www.site.com/home/page

请帮我。谢谢。

4

3 回答 3

21

没有一种功能可以做到这一切。

首先,您需要获取协议(如果它不总是 http):

Dim protocol
Dim domainName
Dim fileName
Dim queryString
Dim url

protocol = "http" 
If lcase(request.ServerVariables("HTTPS"))<> "off" Then 
   protocol = "https" 
End If

现在剩下的带有可选的查询字符串:

domainName= Request.ServerVariables("SERVER_NAME") 
fileName= Request.ServerVariables("SCRIPT_NAME") 
queryString= Request.ServerVariables("QUERY_STRING")

url = protocol & "://" & domainName & fileName
If Len(queryString)<>0 Then
   url = url & "?" & queryString
End If

希望对你有效。

于 2013-03-13T22:20:31.407 回答
19

您可以尝试像这样输出所有 ServerVariables:

for each key in Request.Servervariables
  Response.Write key & " = " & Request.Servervariables(key) & "<br>"
next

也许您寻找的 URL 已经存在。我们使用 Rewrite 模块,并且调用了一个 ServerVariable HTTP_X_ORIGINAL_URL,其中包含重写的 URL 路径,例如您的示例中的“/home/page”。

协议 ( HTTPS=ON/OFF) 和服务器 ( SERVER_NAME) 也可以在 ServerVariables 中找到。

于 2013-03-14T10:04:01.610 回答
2

如果使用 URL Rewrite,则只能通过这种方式检索 url 数据:

Request.ServerVariables("HTTP_X_ORIGINAL_URL")

例子

Dim domainName, urlParam
domainName = Request.ServerVariables("SERVER_NAME") 
urlParam   = Request.ServerVariables("HTTP_X_ORIGINAL_URL")
response.write(domainName & urlParam)
于 2017-10-05T07:32:51.757 回答