在这个给定的情况下,应该遵循什么URL重写或通配符子域规则?

时间:2011-08-23 16:04:28

标签: c# asp.net url-rewriting wildcard-subdomain

我对URL重写和WildCard子域管理完全陌生。

我的要求是我的ASP.Net 3.5 WebApp中有一个gridview,超链接导航url属性动态生成以下url。

http://businessbazaar.in/BusinessBazaarAspx/Details.aspx?cid=1&name=Steel_Bird_Fabricators

注意:此处_表示单词之间的空格。

现在我想要的是当用户点击网址时,浏览器会将网址重写为

http://steelbirdfabricators.businessbazaar.in

我希望它通过一些dll或web.config来实现。我不希望它在IIS上设置,这可能吗?那请告诉我怎么样?我们将非常感激。

1 个答案:

答案 0 :(得分:2)

我假设你的gridview中的某个地方有这样的东西:

<asp:TemplateField HeaderText="Url">
  <ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server"
                   Text='<%# Bind("CategoryName") %>'
         NavigateUrl='http://businessbazaar.in/BusinessBazaarAspx/Details.aspx?cid=1
                      &name=<%# Eval("CategoryName") %>' ></asp:HyperLink>
  </ItemTemplate>
</asp:TemplateField>

如果您要将其更改为

<asp:TemplateField HeaderText="Url">
  <ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server"
                   Text='<%# Bind("CategoryName") %>'
         NavigateUrl='http://<%# Eval("CategoryName") %>.businessbazaar.in/' >
    </asp:HyperLink>
  </ItemTemplate>
</asp:TemplateField>

然后这将解决所请求的问题。

然而,这不会涉及隐含的问题 - “我如何动态处理子域” - 这可能是你的痛苦可能开始的地方:

为了在IIS中工作,您需要设置通配符DNS条目,然后为IIS中的站点提供专用IP地址,您可以将所有这些请求映射到(appears that IIS doesn't support wildcard host header entries)。

然后,您需要设置UrlRewrite IIS module或类似内容来处理请求,并确定实际需要发送到应用程序的内容,以便将正确的信息反馈给用户。

作为一个值得注意的事项,大多数搜索引擎优化人员会建议针对您网站的永久区域使用子域名,因为它们的权重低于主域名下的网页/文件夹。因此,您最好采用更简单的URL选项,例如:http://businessbazaar.in/steel-bird-fabricators(另请注意,使用连字符进行SEO友好分离单词而不是下划线或混合其他内容)。