mvc url输出为小写

来源:互联网 发布:淘宝的主营业务有哪些 编辑:程序博客网 时间:2024/09/21 08:14
  • ASP.NET MVC-LowercaseRoutesMVC让网站的URL输出为小写

  • http://www.cnblogs.com/jiagoushi/p/3783811.html
  • ASP.NET MVC-Lowerca在 SEO 对于 URL 的讨论中,有部分的人是觉得网页的 URL 大小写对于 PageRank 是有影响,而有些人是说对于非使用 IIS 网页服务器的网站其 URL 的大小写才会有影响,对于我来说,其实有关于 URL 大小写与 SEO 的关系对于我来说并不是那么清楚,但为何又要介绍这个套件呢?

    其实我们开发 ASP.NET MVC 网站很少会注意到 URL 大小写,多半我们都是在注意网页执行的正确以及使用者是否输入正确的 URL,但如果今天被客户要求需要将网站内所产出的 URL 都一律使用小写时,那么 LowercaseRoutesMVC 这个套件就派上用场了,这边就来介绍这一个套件。

    LowercaseRoutesMVC - Map ASP.NET MVC routes to lowercase URLs
    http://lowercaseroutesmvc.codeplex.com/

    seRoutesMVC让网站的URL输出为小写

    \
     

    NuGet - LowercaseRoutesMVC
    http://nuget.org/packages/LowercaseRoutesMVC

     \
     

    般我们在 ASP.NET MVC 所开发的网站里所产出的 URL 都会是以下的样子,

    http://test.com/Home/Index or http://test.com/Order/List

    如果是让使用者自行输入 URL 的话,一般来说并不会在输入时去区分大小写,以上 URL 就会输入以下,

    http://test.com/home/index or http://test.com/order/list

    前面有说到,假如要将网站产出的 URL 都转为小写的这样需求时,就是在 ASP.NET MVC 项目中藉由 NuGet 将 LowercaseRoutesMVC 安装到项目里使用就可以了,以下为安装以及使用的步骤,

    Step.1 从 NuGet 安装 LowsercaseRoutesMVC

    先准备好一个 ASP.NET MVC 网站项目,建立好 Model, Controller, View,

     \
     

    P.S 这个示范用的 ASP.NET MVC 专案为 ASP.NET MVC 4.

    预设的状况下,URL 都是以 Camel-cased 的方式呈现,就是我们 Controller 的 prefix 与 Action 名称是怎么输入的,然后再以 Route 设定来做输出,

    \

    \
     
    \
     

    Step.2 透过 NuGet 安装 LowercaseRoutesMVC

    在 NuGet 管理窗口中搜寻「LowercaseRoutesMVC」,会出现两个结果,我们这边需要安装的是第一个,而第二个「LowercaseRoutesMVC4」则是提供给 ASP.NET Web API HTTP routes 所使用,www.it165.net

     

    \

    \

    Step.3 修改 RouteConfig.cs 的 Route 设定

    接着是修改 RouteConfig.cs 的 Route 设定,原本是使用 routes.MapRoute() 来进行 route 设定,而在安装 LowercaseRoutesMVC 之后,这边就需要做修改,以下为原本 RouteConfig.cs 的内容,

    \
     

    将原本使用 MapRoute() 方法改为使用 MapRouteLowercase() 方法,记得前面要引用 LowercasrRoutesMVC 的 Namespace,
     

    \
     

    上面的设定修改完成后,重新建置项目,再一次执行网站,观察 HTML 原始码就可以看到原本为 Camel-cased 的 URL 已经是以 lower-cased 产出,
     

    \
     

    \
     

    ※ Area 的修改
    我在原本的网站项目中新增一个 Area「Test」,

    \
     

    在尚未做任何的设定修改前,我在 Home/Index 首页增加一个指向 Test/Product/List 的连结,而产出的 URL 结果如下,

     

    \

    \
     

    而 Test/Product/List 网页的 URL 并没有转为 lower-cased,这是因为 Area 的 Route 设定并需要在 AreaRegistration 中做设定修改,以下是尚未做任何设定修改的 TestAreaRegistration.cs,

    \
     

    这边的修改就如同在 RouteConfig.cs 的修改是一样的,如下,

     \
     

    修改并重新建置项目,重新执行网站,原本首页指向 Test 区域的 URL 已经转为 lower-cased,

    \
     

    进入到 Test 区域内的 Product/List 网页,也可以看到网页的 URL 也是以 lower-cased 呈现,

    \
     

    虽然说这种指定网站内所有 URL 都要使用 lower-cased 呈现的需求是比较少,但假如有碰到这样的需求时,LowercaseRoutesMVC 这个套件就可以派上用场,而且在设定上也不会很繁琐(如果不写程序的话,是需要到 IIS 去修改 Url Rewrite rule 的设定)。

     

0 0