在注册时创建子域名

5

我正在建设一个网站,企业将能够注册自己的帐户,该帐户应位于http://businessname.example.com,“businessname”每次更改。

我想在Windows服务器(IIS 7)上实现此目标,但不确定如何操作。


1
更适合ServerFault,也许? - Joey
1
不太确定... '服务器'(iis配置+脚本)的方式比 '堆栈'(url重写)的方式更具问题性。因此,如果选择了url重写,应该坚持使用它。 - b0x0rz
4个回答

5

通过http://forums.asp.net/t/874598.aspx

如果您的DNS提供商(即ISP)有“通配符”选项,则可以将*.mydomain.com-> myIP

下一步。 选项#1 制作一个脚本,在IIS中为每个子域创建1个站点 选项#2 制作一个url_rewrite脚本,实时重写url以正确地指向文件夹。

选项2可能是您要寻找的内容(强烈推荐并优先于选项1)。

有关iis7上的url重写的更多信息:http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

Microsoft IIS 7.0的URL Rewrite模块提供了灵活的基于规则的重写引擎,可用于执行广泛的URL操作任务,包括但不限于:

  • 使用动态Web应用程序启用用户友好和搜索引擎友好的URL;
  • 根据HTTP标头和服务器变量重写URL;
  • 网站内容处理;
  • 基于URL段或请求元数据控制对网站内容的访问。

url重写选项使得易于拥有数以十万计的公司,它们的名称可以从数据库中读取,并且url重写将处理重定向。之后,您几乎可以忘记它,因为它将继续为未来签约的所有公司工作。


3

首先,您需要配置DNS服务器将*.example.com解析为服务器的IP地址。

然后,您有两个选择:

  • 每次创建新帐户时,您都需要将其主机添加到IIS的配置中,以便绑定到目录。我不确定如何以编程方式完成此操作。
  • 每次向服务器发出请求时,您都需要检查主机,并将客户端重定向到对应主机的站点。可以是显式重定向(客户端到达http://businessname.domain.com/并被重定向到http://sites.example.com/businessname/),也可以是隐式的(客户端到达http://businessname.example.com/并在专用于businessname的目录上处理请求的应用程序内部进行处理)。

3
通常情况下,更好的方法(如果可能的话)是不使用主机标头或为每个注册单独使用IIS站点。只需将一个IP地址专用于该应用程序,以响应所有端口80(或您使用的任何端口)上的请求,并让您的应用程序检测请求中的主机标头。这样,如果您有1,000个注册,您就不会有1,000个需要在操作系统/服务层面正确配置的“事物”。
或者,如果您只想要代码,不确定您要查看哪种语言,但请参见以下C#...

http://forums.iis.net/t/1151463.aspx


0
这涉及到:
  • 通配符DNS映射
  • 使用IIS API将主机名添加到域,例如businessname.domain.com
  • 编程模拟(因为代码需要比NETWORK SERVICE更高的权限来使用IIS API)

一旦你以程序方式添加了主机名,通配符映射就可以解决它。

URL重写选项会更清晰,但使用物理域,您可以提供FTP访问和其他功能,因为它将是完整的域。

安德鲁


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接