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

时间:2008-12-18 00:45:16

标签: asp-classic default-document

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

http://someurl/

http://someurl/index.asp

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

谷歌搜索不足于此。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分: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>

答案 4 :(得分:0)

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

它在 Request.ServerVariables 集合中不可枚举,也没有一致记录,但它在 IIS 10 中对我有用。我在这里找到它:https://docs.microsoft.com/en-us/iis/web-dev-reference/server-variables