在这种情况下,遵循什么url重写或通配符子域规则

本文关键字:通配符 规则 重写 url 这种情况下 什么 | 更新日期: 2023-09-27 18:06:22

我对URL重写和通配符子域管理完全陌生。

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

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

注意:这里_表示单词之间的空白。

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

http://steelbirdfabricators.businessbazaar.in

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

在这种情况下,遵循什么url重写或通配符子域规则

我假设在你的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地址,您可以将所有这些请求映射到(似乎IIS不支持通配符主机头条目)。

然后你需要设置一些像UrlRewrite IIS模块或类似的东西来处理请求,并计算出它实际上需要发送什么给你的应用程序以获得正确的信息返回给用户。

值得注意的是,大多数SEO人员会建议不要将子域名作为您网站的永久区域,因为它们比主域名下的页面/文件夹重量小。因此,您最好选择更简单的url,例如:http://businessbazaar.in/steel-bird-fabricators(还要注意使用连字符来分隔单词,而不是下划线或将它们混在一起,这对SEO更友好)。