URL重写到公共端点

时间:2010-06-10 17:36:03

标签: asp.net iis-7 url-rewriting

我想创建一个asp.net白标网站http://whitelabel.com,可以根据客户的具体需求为每个客户设计样式。例如,客户端abc将以公司颜色显示该网站,并通过其特定网址http://abc.com进行访问。同样,客户端xyz会以自己的样式和网址http://xyz.com看到该网站。

实际上,键入任一网址会将用户带到应用样式的http://whitelabel.com,并保留客户端的网址结构。

我正在考虑使用URLRewriter.Net(http://urlrewriter.net/)或类似的URL重写,将传入地址映射到客户端ID并相应地应用主题。因此,网址重写规则可能类似于

<rewrite url="http//abc.com/(.+)" to="~/$1?id=1" />

<rewrite url="http//xyz.com/(.+)" to="~/$1?id=2" />

然后我可以读取id,将其映射到客户端,并使用一些jiggery-pokery,应用正确的主题。

我想知道是否:

  1. 这是正确的方法吗?
  2. 我忽略了什么?
  3. 有更好的方法吗?
  4. 任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以让多个域都在同一个iis网站上运行,每个网站都有不同的主题。你甚至不需要重写网址。

我们使用主机标头将不同的域全部指向同一站点,然后检查主机名...

HttpContext.Current.Request.Url.Host

...在我们的基页类的OnPreInit事件中。基于主机名,我们设置页面主题,其中包含App_Themes中设置的所有CSS和自定义图像

以编程方式链接到有关设置主题的信息: http://msdn.microsoft.com/en-us/library/tx35bd89.aspx?PHPSESSID=8415f84585668e69ce791db4abfd0c45

答案 1 :(得分:0)

我已经看到网站以这种方式完成(通用代码库,多个主题网站),但我的经历是使用PHP。代码查看页面的引用来确定用户的来源,并构建正确的页面。

域映射和屏蔽因您使用的主机而异...

然而,如果您使用ASP,看起来URLRewriter会对您有用,因为它会处理您所在域的屏蔽。

答案 2 :(得分:0)

您可以查看Request.RawUrl属性以获取原始网址。因此,在进行重写时无需添加任何参数。