在搜索引擎優化領域,靜態網頁對於SEO的優化有著很大的好處,因此很多人就想把自己的網站的一些網頁做成偽靜態。我們現在在網路上發現很多博客網站、論壇網站、CMS內容管理系統等都有使用偽靜態這一種情況,偽靜態在地址欄看到的URL地址是以.html結尾的,但實際上卻是一個動態的網頁,後臺可能是Asp.ne ...
在搜索引擎優化領域,靜態網頁對於SEO的優化有著很大的好處,因此很多人就想把自己的網站的一些網頁做成偽靜態。我們現在在網路上發現很多博客網站、論壇網站、CMS內容管理系統等都有使用偽靜態這一種情況,偽靜態在地址欄看到的URL地址是以.html結尾的,但實際上卻是一個動態的網頁,後臺可能是Asp.net、Php或者Java動態生成的該頁面。
下麵簡單介紹下ASP.NET MVC5模式下的偽靜態的實現。
1、從URL地址來分析,偽靜態的網頁一般以.html結尾,那我們就需要進行URL重寫,這種重寫在ASP.NET WebForm模式下稍微複雜點,但在MVC模式下就變得簡單,我們只需要添加一個路由規則,該規則的網址以.html界面,並且在規則中加入相應的動態參數。
我們新建個MVC5網站後,預設的路由規則可以查看RouteConfig文件,可以看到規則如下:
在搜索引擎優化領域,靜態網頁對於SEO的優化有著很大的好處,因此很多人就想把自己的網站的一些網頁做成偽靜態。我們現在在網路上發現很多博客網站、論壇網站、CMS內容管理系統等都有使用偽靜態這一種情況,偽靜態在地址欄看到的URL地址是以.html結尾的,但實際上卻是一個動態的網頁,後臺可能是Asp.net、Php或者Java動態生成的該頁面。
下麵簡單介紹下ASP.NET MVC5模式下的偽靜態的實現。
1、從URL地址來分析,偽靜態的網頁一般以.html結尾,那我們就需要進行URL重寫,這種重寫在ASP.NET WebForm模式下稍微複雜點,但在MVC模式下就變得簡單,我們只需要添加一個路由規則,該規則的網址以.html界面,並且在規則中加入相應的動態參數。
我們新建個MVC5網站後,預設的路由規則可以查看RouteConfig文件,可以看到規則如下:
那我們可以仿造上圖中定義規則的形式,定義某個偽靜態的路由,我們定義Test控制器下的Url地址為偽靜態,定義後的規則如下:
2、定義完MVC的路由,重寫URL地址為偽靜態只算完成一半,此時IIS對偽靜態.html的處理並不如你所願。眾所周知,預設情況下.html以及javascript、css文件等靜態資源,請求傳入後,是直接交由IIS進行處理的,不會進過你網站代碼編譯的dll之類處理。
為了使我們定義的偽靜態網頁不交由IIS直接處理,而是交由ASP.NET MVC網站來內部處理的話,我們需要在webconfig中定義一個配置項,告知IIS針對所有的以.html結尾的網頁不做預設處理,而是交由ASP.NET MVC管道處理。為了達到這種效果,我們需要在<system.webServer></system.webServer>中的<handler>節點加入URL重寫配置,具體的配置如下:
<handlers>
<add name="RewriteHtml64" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness64" />
<add name="RewriteHtml32" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness32" />
</handlers>
在上述的兩個配置中,我是配置了32位應用程式和64位應用程式的處理方式,scriptProcessor表示具體處理.html偽靜態文件的管道程式dll,從後面的aspnet_isapi.dll來看就知道.html文件在此設置項定義後將交由ASP.NET MVC內部來處理。
至此,ASP.NET MVC中偽靜態的實現大致完成,相關細節點待讀者自行研究。
備註:原文轉載自ASP.NET MVC重寫URL製作偽靜態網頁_IT技術小趣屋。