如何在ASP.NET中创建子域?我的主页(Home.aspx)上有几个链接: Link1和Link2
我需要创建两个子域link1.example.com和link2.example.com并重定向到它们。我将使用Response.Redirect进行导航。
问题:文件是否需要驻留在不同的目录中?我可以在localhost上测试或模拟这个例子吗?
对这个新手ASP.NET程序员的任何帮助都将不胜感激。
发布于 2008-12-29 15:21:44
根据您实际尝试使用这些重定向实现的目的,这可能是有用的。如果您只是尝试从单个web应用程序处理多个子域,则可以使用托管单个web应用程序的基于ASP.NET的服务器完全伪造此子域行为,并使用Ionics重写筛选器(http://www.codeplex.com/IIRF)等ISAPI重写工具(假设您能够向托管环境添加Isapi筛选器)。
由于ISAPI过滤器在ASP.NET知道请求之前就进行了处理,因此您可以从一个web应用程序托管多个子域(和全域)。不幸的是,在ASP.NET内置web服务器(Cassini)中模拟这种类型的重定向是不可能的,因为它没有使用ISAPI.这种方法允许您测试最终子域的功能,但只能在最终重定向位置测试;您也不能真正在Cassini中测试原始域映射,因为Windows主机文件不允许使用端口规则。
如果将单个应用程序设置为具有处理所有所需子域功能的页面,则只需将对子域的请求重定向到位于所需位置的单个应用程序即可。这可以像在单个应用程序中处理新子域的所有逻辑的页面文件夹一样简单。以下是Ionics的一些示例重写规则,这些规则将向您的单个web项目中的最终位置发送对各个子域的请求:
RewriteCond %{HTTP_Host} ^(?~new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/new-sub-domain$1 [I,R=302]
RewriteCond %{HTTP_Host} ^(?~another-new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/another-new-sub-domain$1 [I,R=302]
# '#' is a comment marker in the rewrite files
# [I] at the end means case-insensitive
# [L] at the end means last rule (sending the request on but hiding the forward from the end user)
# [R] at the end means an official redirect and can be used instead of [L] (the end user will then see a new request, such as a 301 redirect using [R=301])这将导致对新子域的所有请求都转到现有项目中的一个目录(分别为/ new -sub-domain/和/另一个-new-sub-domain/);可以对此进行修改,以便将它们发送到该项目中的任何位置。
虽然这种方法允许您从单个应用程序托管多个子域(以及可能的多个完整域),但在ASP.NET web服务器(Cassini)中对重定向/重写的限制将使您仅限于测试这些最终位置(例如,"/new-sub-domain/")的功能。
发布于 2008-12-29 09:20:26
您需要从您的域提供商(从您购买域名的地方)设置域和子域,而不是从您的ASP.NET网站。
在本地,您无法对此进行测试,因为您只能作为开发web服务器访问http://localhost。
https://stackoverflow.com/questions/397355
复制相似问题