使用{ASP.NET 3.5,Windows Server 2003,IIS 6}
我想优化我的网站搜索引擎优化。为了举例,我有一个有三页的网站:
如果用户首先访问/news.aspx或/events.aspx而未先访问/location.aspx,则会看到未经过滤的内容(所有新闻报道或所有事件)。为了缩小范围,用户转到/location.aspx。位置页面列出了用户可以单击的状态。当用户点击某个州时,他会获得一个城市列表。当用户点击一个城市时,他会得到一个街道列表。当用户点击街道时,他将被带回/news.aspx,但他看到的内容现在按位置过滤。如果用户单击/events.aspx页面,也会发生同样的情况。
我可以通过会话或cookie完成所有这些,但是,对于搜索引擎优化,我有搜索机器人可以应对。我很确定网址重写是要走的路,但我找到的例子(并且它们很多)处理简单的东西,如/ products / umbrella或/ books / authors / spolsky。它 - 感觉 - 比这更复杂(也许它更简单......让我直截了当)。
我最初的想法是我需要某种形式的URL重写处理程序或模块,以便我可以开始使用像mysite.net/WA/Seattle/Pike_Pl这样的网址。然后,一旦确定了位置,站点中的所有内部URL都将具有其中的位置...到达/events.aspx,该链接实际上将指向mysite.net/WA/Seattle/Pike_Pl/events。 ASPX。处理程序将从url路径中获取位置信息,并将url重写为/events.aspx?state=WA&city=Seattle&street=Pike_Pl。对于我的网站中的/news.aspx或任何其他位置敏感页面也是如此。
如果你做过类似的事情,我们将非常感谢代码示例。
拜伦
答案 0 :(得分:1)
创建一个可以放在所有提到的页面上的控件,允许进行“就地”过滤会不会更容易?
然后重写网址的问题。我希望网址如下所示:
事件和新闻页面都有控件“SetLocation.ascx”。现在没有必要先访问location.aspx页面,使用该控件来获取这些设置。
使用任何可用的开源UrlRewrite来捕捉http://siteurl.com/ 事件 / AREA / CITY / STREET和http://siteurl.com/ 新闻等网址/ AREA / CITY / STREET并将它们映射到带有正则表达式的内部URL(大多数(如果不是所有的urlrewriters都使用)),如下所示:
<rewrite url="~/Events/(.+)" to="~/Event.aspx?area=$1" />
<rewrite url="~/Events/(.+)/(.+)" to="~/Event.aspx?area=$1&city=$2" />
<rewrite url="~/Events/(.+)/(.+)/(.+)" to="~/Event.aspx?area=$1&city=$2&street=$3" />
然后使用类似http://siteurl.com/ 事件 / EVENTNAME的网址指向实际事件(请注意网址中/ event之后缺少的's')。在会话中保存当前选定的区域/城市/街道,并在用户使用SetLocation.ascx控件更改它时更新它。