技术开发 频道

深入理解ASP.NET MVC路由表生成URL原理

  URL设计原则

  在MVC框架下,我们可以对URL做完全的控制,自然就想到要设计出优良的url,URL究竟该如何设计。由于本人web开发经验很少,以下是书中的内容,我做了些概括:

  1.url要尽量通俗易懂,不要把技术的东西包含在里面,比如下面这样的:

/Website_v2/CachedContentServer/FromCache/AnnualReport

/my%20great%20article(使用/my-great-article为好)

 

  2.有意义的文本总比ID数字让人感觉舒服

  3.不要在url中带有后缀名

  4.要有比较强的层次感,又要简短易记,比如:/Products/Menswear/Shirts/Red

  5.url要大小写不敏感,并且尽量使用小写字母,mvc框架是大小写不分的

  6.不要因为url的变更而弃用老的url,要使用跳转的方式

  7.对于只读的操作使用get方式,对于要修改服务器数据的请求使用post方式;url要方便人们保存书签或分享网页,因此,对于分页显示的情况,分页要体现在url中

  8.QueryString要尽量少用。当参数是为了参与某种算法,而不是为了直接的资源指向时,可以使用QueryString,因为用户此时不愿意手动输入url。比如page参数

  301和302

  同样是使客户端浏览器跳转,301是暗示永久跳转,可以暗示搜索引擎这个url将永久不用,当确实需要更形url时考虑;

  302表示临时跳转,MVC的RedirectToRouteResult和RedirectResult使用302。

  可以像下面这样进行301跳转:

public static class PermanentRedirectionExtensions
{
    
public static PermanentRedirectToRouteResult AsMovedPermanently
        (this RedirectToRouteResult redirection)
    {
        return
new PermanentRedirectToRouteResult(redirection);
    }
    
public class PermanentRedirectToRouteResult : ActionResult
    {
        
public RedirectToRouteResult Redirection { get; private set; }
        
public PermanentRedirectToRouteResult(RedirectToRouteResult redirection)
        {
            this.Redirection
= redirection;
        }
        
public override void ExecuteResult(ControllerContext context)
        {
            
// After setting up a normal redirection, switch it to a 301
            Redirection.ExecuteResult(context);
            context.HttpContext.Response.StatusCode
= 301;
        }
    }
}
public ActionResult MyActionMethod()
{
    return RedirectToAction(
"AnotherAction").AsMovedPermanently();
}

 

  关于SEO(search engine optimization)

  提高排名的技巧:

  1.url使用关键字而不是数字

  2.url使用较少的QueryString,不要使用下划线

  3.单一内容单一url,不要多个url指向相同的内容

  4.如果要多个url指向相同的内容,使用301跳转

  5.网页的内容要可被“寻址”,要使用get方式,内容不要过于依赖post方式,或者js,flash,silverlight等客户端技术。

0
相关文章