我有一个场景,我有一个可供多个客户使用的网站。 但我不想将网站发布到每个客户域。相反,我会将网站发布到 Azure 网站,例如 mywebsite.azurewebsites.net,并且我希望所有客户域都重定向到此 mywebsite.azurewebsites.net,但是我需要知道这是哪个客户,以便我可以显示正确的内容。例如,我正在考虑在查询字符串等中附加或发送隐藏的自定义参数。 我需要知道的是
- 如何将所有域重定向到 mywebsite.azurewebsites.net
- 如何在重定向中传递隐藏参数,例如来自客户域的任何请求,例如“www.cust1.com/Home/Index”将被重定向到“mywebsite.com”。 azurewebsites.net/Home/Index?username=testuser”和“www.cust1.com/Home/Index?querystring=ffff”到“mywebsite.azurewebsites.net? querystring=ffff&用户名=testuser"
- 我不想在客户网站上发布任何网站内容,这意味着客户域根目录将为空。
最佳答案
有很多不同的方法可以做到这一点。
您需要确定的第一件事是:您将如何处理到 mywebsite.azurewebsites.net 的重定向?
- 您是否打算直接在客户网站上放置代码以
重定向? - 您是否有权访问客户的 DNS,以便将他们的网站转发到 mywebsite.azurewebsites.net?
- 您想创建 CNAME 记录并将其指向您的 Azure 网站吗?
方法#1
如果您可以访问客户网站,那么这将成为最简单的方法。
如上所述,我只需使用某种类型的自定义网址(即 mywebsite.azurewebsites.net/customer1 )将用户重定向回您的网站。
当用户点击此页面时,您可以在他们的浏览器中设置一个 cookie,以便您知道他们来自哪里,然后将他们重定向到 mywebsite.azurewebsites.net 的主页。这几乎会立即发生,而客户永远不会注意到。
方法#2
如果您能够转发域名,或者他们只能将用户重定向到 mywebsite.azurewebsites.net 的主网站,您可以在请求传入时简单地查找引用 URL。然后按照上面的操作,基于然后,您可以在引用 URL 上设置 cookie 并显示正确的内容。
方法#3
假设您有权访问客户的 DNS 记录,并且能够为 www.customerwebsite.com -> mywebsite.azurewesbites.net 创建 CNAME 记录
在这种情况下,当用户访问该网站时,您只需下拉主机,然后根据该主机设置您的内容。
具体代码在这里:
string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx
string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx
string host = HttpContext.Current.Request.Url.Host;
// localhost
您可以在这里找到更多信息:How to get the URL of the current page in C#
如果您有任何疑问或最终实现了这些解决方案,请告诉我。
关于asp.net-mvc - 使用自定义参数将多个域重定向到同一个 Azure 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33561105/