目标是:
更改 details.aspx?GUID = 903901823908129038 等网页,以清除 / adrian_seo
等网页取得: 现在使用Response.AddHeader(“Location”,url);
我可以删除所有大写网址。我使用以下函数:
protected void Page_Load(object sender, EventArgs e)
{
string url = Request.Url.ToString();
if (url != Request.Url.ToString().ToLower())
{
url = Request.Url.ToString().ToLower();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url);
}
}
问题是:
如何更改这些内容以清除/ adrian_seo
等网址我的意思是如何处理来到/ adrian_seo的请求以及如何使用新网址显示旧页面。
我需要使用Global.asax吗?
答案 0 :(得分:6)
答案 1 :(得分:1)
使用HttpModule:
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
if (context.Request.RawUrl.ToLowerInvariant().Equals("YOURSEOURL"))
context.RewritePath("YOURNONSEOURL");
}
请注意,您不想对所有这些进行硬编码。找到一些匹配你需要的正则表达式,比如SEO网址是:/ page / 234234 /这是我的页面标题,你抓住234234并重写路径到page.aspx?pageid = 234234
UPDATE 您也可以使用IIS 7 Rewrite Module
答案 2 :(得分:1)
我建议使用UrlRewritingNet组件。在编写自己的库时,你需要克服一些困难,这个库已经为你处理了这些东西......
这是一个重写模块 ASP.NET 2.0,并提供
支持
- 主题和主页
- 正则表达式
- Good Postback-Urls
- 无Cookie会话
- 在共享托管或中等信托环境中运行
- 支持OutputCache
- 可以重定向,甚至可以重定向到其他域
要在IIS 6或更低版本的asp.net中启用无扩展网址,您还需要configure IIS让asp.net处理所有传入请求。
答案 3 :(得分:0)
您可以使用可在asp.net 1.1上使用的http://urlrewriter.net/ - >
答案 4 :(得分:0)
在Asp.net上阅读路由之后:
http://blog.eworldui.net/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx
这为SEO页面排名和Asp.net路由提供301重定向,用于永久性有机SEO解决方案。