2014-02-12 49 views
0

我正在重新设计一个网站,新网站带有URL路由功能,并且需要更改一些旧网址。但我想正确地将旧网址的用户重定向到网站的新网址。比较URL和if语句以正确重定向到新URL

旧的URL http://www.abc.com/about 新URL http://www.abc.com/about-us

所以想用下面的代码做它global.asx文件。

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://www.abc.com/about")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 

但是,这将触发代码执行以下

http://www.abc.com/about 
http://www.abc.com/about-us 
http://www.abc.com/about-us/history 
http://www.abc.com/about-us/vision 

什么是比较URL的更好的办法,我应该用一个简单的老学校if (A == B)或者是他们做的更好的办法中提到的所有网址它

if (HttpContext.Current.Request.Url.ToString().ToLower().Equals("http://www.abc.com/about") 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 

或使用本

if (HttpContext.Current.Request.Url.ToString().ToLower()=="http://www.abc.com/about") 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 

正则表达式也可以使用,但我不善于和将它,除非我不是绝对确定。

有什么建议,在这种情况下

UPDATE:决定做这样

if (HttpContext.Current.Request.Url.ToString().ToLower().Equals("http://www.abc.com/about") || (HttpContext.Current.Request.Url.ToString().ToLower().Equals("http://www.abc.com/about/") 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 
+0

而不是使用这我建议你在web.config中编写重写规则。 –

回答

0

尝试检查响应状态代码以及之前重定向: -

if (HttpContext.Current.Request.Url.ToString().ToLower()=="http://www.abc.com/about" 
&& HttpContext.Current.Response.StatusCode!=301) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.StatusCode = 301; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 
+0

如何使用'ToLower()。Equals(“http://www.abc.com/about”)' – Learning

0

您可以执行以下操作:

if(HttpContext.Current.Request.Url.ToString().ToLower().EndsWith("abc.com/about")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.Redirect("http://www.abc.com/about-us"); 
} 
0

由于最终用户可以输入 “abc.com/about” 或 “www.abc.com/about”

试试这个:

if (Request.Url.ToString().ToLower().Contains("abc.com/about")) 
     Response.Redirect("http://www.abc.com/about-us"); 

感谢

+0

我想你的意思是'abc.com/about'或'abc.com/about /'我已经做到这一点,并决定按照我的问题更新 – Learning