如何允许用户在我的 MVC 网站上创建自己的子域? [复制]

Posted

技术标签:

【中文标题】如何允许用户在我的 MVC 网站上创建自己的子域? [复制]【英文标题】:How to allow users to create their own subdomains on my MVC website? [duplicate] 【发布时间】:2012-10-11 05:47:41 【问题描述】:

可能重复:Is it possible to make an ASP.NET MVC route based on a subdomain?

我将建立一个网站,允许用户创建他们自己的虚拟商店,由我的网站托管。

想想 eBay;让小企业创建自己的商店。

例如:

www.foo.com                 - The main website.
www.georgestires.foo.com    - "George's Tires" online store.

我会让用户在一定程度上创建自己的样式表和自定义,但那是以后的事了。现在我想知道如何在 MVC 3 网站上实现此功能。

我真的处于零地,没有腿可以站立。任何和所有的建议表示赞赏。我知道在 IIS 中我可以创建一个“bar.foo.com”子域绑定并直接流向我的 ASP.Net MVC3 应用程序,但这是否意味着每次有人创建他们的商店时我都必须以编程方式创建一个新的绑定?

这可能吗?我应该研究这种方法吗?

【问题讨论】:

@lazyberezovsky:感谢您链接该问题,但这些答案都不适用于我。我的“子域”事先不知道,可以说它们需要是动态的和“可创建的”。如果您要在该网站上注册,您必须能够创建 lazyberez.foo.com,而无需我作为该网站的所有者进行任何互动。 【参考方案1】:

bind DNS 服务器和 Microsoft DNS 服务器都允许设置匹配域中任何不存在条目的wildcard entry

*.example.com.   3600 IN  CNAME host1.example.com.

然后在 IIS 中设置 URL 重写规则,将 http://subdomain.yourdomain.com/ 形式的 URL 转换为 http://yourdomain.com/?root=subdomain

这将允许您使用数据库管理这些克隆站点。

唯一的缺点是DNS system 不允许您设置www.*.yourdomain.tld 形式的通配符条目

【讨论】:

【参考方案2】:

我不知道在 Windows 世界中是否可以在 Apache 中执行“url rewrite”链接。

所以人们会看到:www.georgestires.foo.com,但实际上是 www.foo.com/georgestires。这样您就不必为每个帐户创建真正的子域。

【讨论】:

【参考方案3】:

您需要 DNAME 记录指向您的服务器,并简单地配置 IIS 以接受端口 80 上的所有请求并发送到您的应用程序。比检查主机头来查看传入的域是什么。

现在对于 SSL,您需要做更多的工作。再次 *.mydomain 证书可能适合您。

【讨论】:

我是否需要为在我的网站上创建商店的每个潜在客户创建一个DNAME 记录?这似乎不可行。 @Serg,检查链接/RFC - 你只需要一个(比通配符 CNAME - 它只给你一个级别)。

以上是关于如何允许用户在我的 MVC 网站上创建自己的子域? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

rails: 如何基于子域覆盖locale?

如何为在网站上注册的用户创建自动创建子域?

如何使用 cURL 创建子域?

如何在子域共享主机上安装 laravel

Chrome 上的阅读器模式允许用户在我的网站上复制文本。如何禁用它?

如何为在您网站上注册的用户自动创建子域?