2

在一个名为 index.asp 的文件中,该文件在 IIS 中设置为目录的默认文档,我试图通过 .asp VBScript 确定页面是否被称为默认文档而不是直接按名称调用,即我是试图在服务器端区分这两种情况:

http://someurl/

http://someurl/index.asp

我知道如何在 ASP.NET 中执行此操作,但似乎没有相同的“服务器变量”。处理 URL 和脚本名称(PATH_INFO、SCRIPT_NAME、URL)的服务器变量都返回“index.asp”,而不管脚本被调用的方式。

谷歌搜索达不到这一点。有任何想法吗?

4

5 回答 5

1

服务器不会知道,但客户端会。在 JavaScript 中,您可以检查location.href,然后使用 Ajax 调用将该值传递回服务器,以获取所需的任何日志记录机制。

于 2008-12-18T01:24:24.603 回答
0

与之前的答案类似,但创建一个新页面,将其命名为 homepage.asp,它具有 #INCLUDE FILE="index.asp" 或让它执行 index.asp 的 server.transfer 或 server.execute 将保存请求.ServerVariables 脚本名称在 homepage.asp 中作为请求对象,一旦它被传递到 ASP 中就不会更改脚本名称。然后你可以只测试这个值,你就不必依赖referrer或进行重定向。这仍然意味着您必须更改默认文档。

于 2008-12-18T02:18:28.003 回答
0

这个怎么样...
创建一个新文件 IndexDefault.asp 并将其设置为默认文档
在 IndexDefault.asp 中使其重定向到 Index.asp
在 IndexDefault.asp 中检查 IndexDefault.asp 的引用者。

于 2008-12-18T01:01:41.230 回答
0

Diodeus 是正确的,客户端 JavaScript 似乎是检测 URL 的唯一方法。所有其他选项都需要将内容页面和默认文档页面区分为单独的文件。我真正想做的就是将这两个请求压缩为默认文档 URL(在直接请求 index.asp 的情况下重定向)。

为了满足这是一个单一的、插入式代码的要求,我最终使用了这个 JavaScript 块:

<script language="javascript" type="text/javascript">
var loc = window.location.href;
var re = /\/index.asp/i;
if (loc.search(re) != -1) {
    window.location.href = loc.replace (re,"/"); 
}
</script>
于 2008-12-18T04:41:54.813 回答
0

Request.ServerVariables("REQUEST_URI").item 将为您提供客户端请求的原始 url,包括查询字符串部分。

它在 Request.ServerVariables 集合中不可枚举,并且没有一致地记录在案,但它在 IIS 10 中对我有用。我在这里找到了它:https ://docs.microsoft.com/en-us/iis/web-dev-reference /服务器变量

于 2021-04-14T02:30:25.630 回答