传统的ASP的Response.Redirect到

传统的ASP的Response.Redirect到

问题描述:

相应的页面

我创建了一个html的维修档案,我想,当有人访问该网站重定向到维护文件夹/ index.html的传统的ASP的Response.Redirect到

我的代码:在(的default.asp根)

<% 
    If InStr(UCase(Request.ServerVariables("SERVER_NAME")), UCase("abc.com")) > 0 Then 
     Response.Redirect("/maintenance/")  
    ElseIf InStr(UCase(Request.ServerVariables("SERVER_NAME")), UCase("web.com")) > 0 Then 
     Response.Redirect("/web/") 
    End If 

%> 

它工作正常,如果我去abc.com,但如果我输入abc.com/blog它进入博客页面。我如何防止它不会进入任何子文件夹。

+0

您是否使用DNN?不知道为什么它被标记为 – 2013-04-30 15:22:10

+0

是的,需要这个为DNN和我的常规asp网站工作,认为这将是相同的逻辑,谢谢 – Ben 2013-04-30 15:42:30

+0

你可以简单地使用app_offline方法吗?或者你是否还想让管理员访问该网站 – 2013-04-30 16:24:03

也许使用Request.ServerVariables["HTTP_HOST"]可以解决你的问题。

您是否试图用变量Request.ServerVariables("SERVER_NAME")查看Response.Write以了解为什么字符串检查失败?

+0

当我尝试做Response.Write而不是重定向为abc.com时,它显示正确的域名,但是当我为abc.com/blog执行时,它由于某种原因跳过了default.asp文件。不知道为什么它不执行default.asp – Ben 2013-04-30 07:29:44

+0

啊,好的。我误解了你的问题。 它没有被重定向,因为你的default.asp根本没有被执行。 – misleadingTitle 2013-04-30 07:34:48

+0

我的理解是否正确,如果我说你想让整个网站无法访问(就像是“正在进行的工作”页面)? – misleadingTitle 2013-04-30 07:38:02

你使用这个“测试>做”的方法,而不是仅仅采取现场下来,因为创建一个定制的404.html页: (1)网站获得通过各种域名调用,并且要了一些工作,但不是别人;或者 (2)你刚刚没有想到使用404方法?

无论如何,如果你想通过代码来执行它,然后把这个在最顶部的页面(标题,很重要的前),甚至以此作为你的index.asp或Default.asp的页面:

<% 
s_url = Request.ServerVariables("server_name") 
s_url = lcase(s_url) 
b_found = InStr(1,s_url, "abc.com",1) 
if (b_found <> 0) then 
    response.redirect("/maintenance/") 
end if 
%> 
+0

这是正确的,我的网站有其他域指向其他文件夹,(我更新了我的问题代码,使其更清楚),基本上有一个网站指向维护文件夹而不接触其他网站,我是否需要将此代码放在每个文件夹中? – Ben 2013-05-01 03:40:34

+0

不需要。此代码只需要放在default.asp或index.asp文件中,无论哪个人告诉IIS您是默认的起始页面。如果您只想隔离abc.com,则此代码有效。但是如果你想检查其他人,并且他们都去同一个地方,那么你应该创建一个你想要重定向到/ maintenance /文件夹的所有域的数组,然后使用InStr函数检查s_url对该数组。 – ScotterMonkey 2013-05-01 15:38:39