如何在MVC中创建动态子域?

时间:2016-08-25 12:23:02

标签: c# asp.net asp.net-mvc

我已将我的网站托管为www.sample.com,但我需要

  • -user1.sample.com
  • -user2.sample.com
  • -user3.sample.com

可能吗?每个用户都作为子域名。

1 个答案:

答案 0 :(得分:0)

你实际上并没有"创造"新的子域名 - 而不是你设置"通配符"作为所有未解析名称的全部内容的条目:

  1. 您需要通配符DNS记录,以便所有子域解析为相同的主机(IP)地址。并非所有DNS提供商都提供此服务,因此您可能需要在必要时切换DNS服务。
  2. 然后,您需要配置Web服务器以处理这些请求。您有两种选择:
    1. 使用端点绑定(因此您的IIS网站将处理对给定IP地址和端口号的所有请求)。在IIS 10.0之前,这是支持通配符或任意子域的唯一方法。这种方法需要为每个网站提供单独的IP地址。
    2. 使用正确的通配符域绑定。 (IIS最终在10.0版中添加了对此功能的支持)[0](IIS 10.0随Windows 10和Windows Server 2016发布)。 IIS 8.5或更早版本不支持此功能。
  3. 您的应用程序代码需要检查HTTP # Initialization. CAR_TYPES = { foo_type: ['honda', 'acura', 'mercedes'], bar_type: ['toyota', 'lexus'] # More... } @type_for_name = {} CAR_TYPES.each { |type, names| names.each { |name| @type_for_name[type] = name } } case @type_for_name[car] when :foo_type # do foo things when :bar_type # do bar things end 标头以确定检查的内容。如果您正在使用带路由的ASP.NET(ASP.NET MVC自动执行),您可以使用自定义Host:子类在路由中使用RouteBase标头值,如本示例所示:http://benjii.me/2015/02/subdomain-routing-in-asp-net-mvc/
  4. 请注意,步骤2的两个选项都需要客户服务器配置选项(IP地址绑定或运行Windows Server 2016)。如果您正在使用共享托管服务提供商(HostGator,DreamHost等 - 甚至Azure网站),那么您将无法使用此功能,因为他们通常不会向客户提供这些功能 - 但无论如何都要求他们看看他们是否可以支持你。