使用自定义参数将多个域重定向到同一个 azure 网站
Redirect multiple domains to same azure website with custom parameters
我有一个场景,我有一个将由多个客户使用的网站。
但我不想将网站发布到每个客户域的。相反,我会将网站发布到一个 Azure 网站,例如 mywebsite.azurewebsites.net,我希望所有客户域都重定向到此 mywebsite.azurewebsites.net 但我需要知道这是哪个客户,这样我才能显示正确的内容。例如,我正在考虑在查询字符串等中附加或发送隐藏的自定义参数。
我需要知道的是
- 如何将所有域重定向到 mywebsite.azurewebsites.net
- 如何在重定向中传递隐藏参数,例如来自客户域的任何请求,例如“www.cust1.com/Home/Index”将被重定向到“ mywebsite.azurewebsites.net/Home/Index?username=testuser”和“www.cust1.com/Home/Index?querystring=ffff”到“mywebsite.azurewebsites.net?querystring=ffff&username=testuser”
- 我不想在客户网站上发布任何网站内容,这意味着客户域根目录将为空。
有很多不同的方法可以做到这一点。
您需要确定的第一件事是:您将如何处理重定向到 mywebsite.azurewebsites.net?
- 您是否打算将代码直接放在客户网站上以
重定向?
- 您是否有权访问客户的 DNS 以允许您将他们的站点转发到 mywebsite.azurewebsites.net?
- 是否要创建 CNAME 记录并将其指向您的 Azure 网站?
方法#1
如果您可以访问客户网站,那么这是最简单的方法。
正如您在上面所描述的,我会使用某种类型的自定义 url 将用户重定向回您的网站,即 mywebsite.azurewebsites.net/customer1 。
当用户点击此页面时,您可以在他们的浏览器中设置一个 cookie,以便您知道他们来自哪里,然后将他们重定向到位于 mywebsite.azurewebsites.net 的主页。这几乎会立即发生,客户永远不会注意到。
方法#2
如果您能够转发域或者他们只能将用户重定向到位于 mywebsite.azurewebsites.net 的主网站,您可以在收到请求时简单地查找参考 url。然后正如您在上面所做的那样,基于引用 URL,您可以设置您的 cookie 并显示正确的内容。
方法三
这是假设您可以访问客户的 DNS 记录并且能够为 www.customerwebsite.com -> mywebsite.azurewesbites.net
创建 CNAME 记录
在那种情况下,当用户访问该站点时,您只需拉下 HOST,然后以此为基础设置您的内容。
具体代码在这里:
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#
如果您有任何问题或最终实施了这些解决方案,请告诉我。
我有一个场景,我有一个将由多个客户使用的网站。 但我不想将网站发布到每个客户域的。相反,我会将网站发布到一个 Azure 网站,例如 mywebsite.azurewebsites.net,我希望所有客户域都重定向到此 mywebsite.azurewebsites.net 但我需要知道这是哪个客户,这样我才能显示正确的内容。例如,我正在考虑在查询字符串等中附加或发送隐藏的自定义参数。 我需要知道的是
- 如何将所有域重定向到 mywebsite.azurewebsites.net
- 如何在重定向中传递隐藏参数,例如来自客户域的任何请求,例如“www.cust1.com/Home/Index”将被重定向到“ mywebsite.azurewebsites.net/Home/Index?username=testuser”和“www.cust1.com/Home/Index?querystring=ffff”到“mywebsite.azurewebsites.net?querystring=ffff&username=testuser”
- 我不想在客户网站上发布任何网站内容,这意味着客户域根目录将为空。
有很多不同的方法可以做到这一点。
您需要确定的第一件事是:您将如何处理重定向到 mywebsite.azurewebsites.net?
- 您是否打算将代码直接放在客户网站上以
重定向? - 您是否有权访问客户的 DNS 以允许您将他们的站点转发到 mywebsite.azurewebsites.net?
- 是否要创建 CNAME 记录并将其指向您的 Azure 网站?
方法#1
如果您可以访问客户网站,那么这是最简单的方法。
正如您在上面所描述的,我会使用某种类型的自定义 url 将用户重定向回您的网站,即 mywebsite.azurewebsites.net/customer1 。
当用户点击此页面时,您可以在他们的浏览器中设置一个 cookie,以便您知道他们来自哪里,然后将他们重定向到位于 mywebsite.azurewebsites.net 的主页。这几乎会立即发生,客户永远不会注意到。
方法#2
如果您能够转发域或者他们只能将用户重定向到位于 mywebsite.azurewebsites.net 的主网站,您可以在收到请求时简单地查找参考 url。然后正如您在上面所做的那样,基于引用 URL,您可以设置您的 cookie 并显示正确的内容。
方法三
这是假设您可以访问客户的 DNS 记录并且能够为 www.customerwebsite.com -> mywebsite.azurewesbites.net
创建 CNAME 记录在那种情况下,当用户访问该站点时,您只需拉下 HOST,然后以此为基础设置您的内容。
具体代码在这里:
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#
如果您有任何问题或最终实施了这些解决方案,请告诉我。