Asp classic 如何确定默认文档是否在传统ASP中提供?

Asp classic 如何确定默认文档是否在传统ASP中提供?,asp-classic,default-document,Asp Classic,Default Document,在名为index.asp的文件(在IIS中设置为目录的默认文档)中,我试图通过.asp VBScript确定页面是否被称为默认文档,而不是直接通过名称,即,我试图区分这两种情况服务器端: 我知道如何在ASP.NET中实现这一点,但似乎没有相同的“服务器变量”。处理URL和脚本名称(路径信息、脚本名称、URL)的服务器变量都返回“index.asp”,无论脚本以何种方式调用 谷歌搜索在这方面做得不够。有什么想法吗?这个怎么样…… 创建一个新文件IndexDefault.asp并将其设置为默认文

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

我知道如何在ASP.NET中实现这一点,但似乎没有相同的“服务器变量”。处理URL和脚本名称(路径信息、脚本名称、URL)的服务器变量都返回“index.asp”,无论脚本以何种方式调用

谷歌搜索在这方面做得不够。有什么想法吗?

这个怎么样……
创建一个新文件IndexDefault.asp并将其设置为默认文档
在IndexDefault.asp中,将其重定向到Index.asp

在IndexDefault.asp中,检查IndexDefault.asp的引用者。

服务器不会知道,但客户端会知道。在JavaScript中,您可以检查
location.href
,然后使用Ajax调用将该值传递回服务器,无论您想要什么日志记录机制。

与前面的答案类似,但创建一个新页面时,将其称为homepage.asp,该页面包含#INCLUDE FILE=“index.asp”或者让它执行index.asp的server.transfer或server.execute会将Request.ServerVariables脚本名保存为homepage.asp,因为请求对象在传递到asp后不会更改脚本名。然后,您可以只测试这个值,而不必依赖于referer或进行重定向。这仍然意味着您必须更改默认文档。

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>

var loc=window.location.href;
var re=/\/index.asp/i;
如果(位置搜索(re)!=-1){
window.location.href=loc.replace(re,“/”);
}
Request.ServerVariables(“Request\u URI”)。项将为您提供客户端请求的原始url,包括查询字符串部分


它在Request.ServerVariables集合中不可枚举,也没有一致的文档记录,但它在IIS 10中对我有效。我在这里找到它:

您是否对Request.ServerVariables使用了基本迭代器来确定是否有可用的迭代器?我现在不在我的机器前面,所以我无法测试…请求中的每个s。我误解了你的问题,但是的,我试过了。除了我列出的三个变量外,包含脚本名称的唯一其他变量是“PATH_TRANSLATED”,但这是一个物理路径,默认文档不会更改。我考虑过这一点,它会起作用,但有人要求我插入一段代码,客户将不得不重新修改站点上的所有默认文档设置。如果没有人提出一种纯粹的编程方法,我会把它标记为答案。事实上,这是行不通的。服务器端response.redirect似乎未设置HTTP_REFERER。您可以使用元刷新标记来重定向页面,而不是服务器重定向。如果禁用Javascript,Javascript重定向不是一个好的解决方案。mdaustin。它不起作用,因为我忽略了一步。不要使用HTTP_Referer,只需让重定向链接包含一个querystring参数,目标页面可以查找该参数来标识重新路由的请求。如果它接受了,那么我认为这是最好的解决方案+1.