我找到了一些类似的答案,但希望有人能澄清一下,以防我误解。这是在 ASP.NET 中的 IIS 7 上托管的
在我的网站上,我有根域名和 www 域名指向我的主页:
- example.com 转到我的主页
- www.example.com 转到我的主页
我还为我的用户设置了 URL 重定向:
- user1.example.com 重写为 example.com/Page.aspx?u=user1
- user2.example.com 重写为 example.com/Page.aspx?u=user2
- ETC。
这些都运行良好,但我想让我的用户注册自己的域名以指向自己的网站。他们将控制这些名称,我将提供有关如何设置它们的教程。我很确定我可以弄清楚如何让 CNAME 适用于 www 子域,但我也想让根 URL 正常工作。这可能吗?
我想:
- userdomain1.com 指向 user1.example.com
- www.userdomain1.com 指向 user1.example.com
- userdomain2.com 指向 user2.example.com
我可以使用域名屏蔽,但宁愿不这样做,因为我希望域名能够像实际域名一样运行。
可以通过 DNS 和/或编码以任何方式完成此操作吗?谢谢!:)
答案1
如果我理解正确的话,您不能按照要求的方式使用 CNAME 记录。要完成您要做的事情,您必须放入指向某些将为您执行 http 重定向的 Web 服务器的 A 记录。Godaddy 可以为您重定向这样的域名。他们在以下文档中将此称为“无掩码转发”:
答案2
在这里为任何感兴趣的人留下答案,因为看起来我已经让它工作了!
对于用户的域名,我将指示他们将 A 记录指向我的网站的 IP 地址。我通过 @ 主机执行了此操作,但我想也可以使用 * 通配符主机来完成。
然后,在我的 Web.config 文件中,我为 IIS 7 重写模块创建了以下条目:
<rule name="UserDomain" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^(?:www\.)?example\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/Page.aspx?d={HTTP_HOST}" />
</rule>
基本上,这个负面正则表达式规则表示,任何指向此主机的域名,不是主网站域名 example.com,重定向到 Page.aspx 并在查询字符串中传递域名。这将允许我根据需要在数据库中查找。关于这一点最好的部分是它不是域名掩码,也不是域名转发。它很好,很干净,DNS 很好,只需一点魔法就可以让它工作。
仍然需要进行一些调整,但很高兴我弄明白了这一点!:)