将根域指向另一个 TLD 的子域(通过 DNS,而不是屏蔽)

将根域指向另一个 TLD 的子域(通过 DNS,而不是屏蔽)

我找到了一些类似的答案,但希望有人能澄清一下,以防我误解。这是在 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 可以为您重定向这样的域名。他们在以下文档中将此称为“无掩码转发”:

http://help.godaddy.com/article/422

答案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 很好,只需一点魔法就可以让它工作。

仍然需要进行一些调整,但很高兴我弄明白了这一点!:)

相关内容