2

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

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

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

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

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

http://steelbirdfabricators.businessbazaar.in

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

4

1 回答 1

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>

那么这将解决所请求的问题。

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

为此,您需要设置一个通配符 DNS 条目,然后为 IIS 中的站点设置一个专用 IP 地址,您可以将所有这些请求映射到该地址(看来 IIS 不支持通配符主机标头条目)。

然后,您需要设置类似UrlRewrite IIS 模块或类似模块来处理请求并确定它实际需要发送到您的应用程序以将正确的信息返回给用户。

需要注意的是,大多数 SEO 人员会建议不要将子域用于您网站的永久区域,因为它们的权重低于主域下的页面/文件夹。因此,您最好选择更简单的 URL 选项,例如:(http://businessbazaar.in/steel-bird-fabricators还要注意更 SEO 友好地使用连字符来分隔单词,而不是下划线或 mashingthemalltogther)。

于 2011-08-23T16:35:06.147 回答