asp.net網站url僞靜態重寫技術的實現

我們先討論幾個有關頁面靜態話的問題:
 
大家對僞靜態(URL重寫)有什麼看法?
以.aspx/.asp/.php結尾的頁僞靜態爲以.htm或者.html結尾的頁有什麼看法,性能會得到提高嗎,有什麼好處?
那麼或者直接生成靜態頁面又有什麼好處,是否推薦在一個網站大量使用呢?
對於騰訊那樣的大的門戶網站他們的新聞頁是生成的靜態頁呢或者是僞裝的?

最佳答案:
運行PHP,ASP.NET,JSP,ColdFusion的網頁服務器(如IIS,Apache),大多可以用URL Rewriting來實現隱藏或改變拓展名。大網站,象騰訊,百度(用PHP),都在用URL Rewriting的方法來把拓展名隱藏或改變。好處有幾點:

1. 搜索引擎比較喜歡.html,.htm的(與.jsp,.php,.aspx,.cff相比),因爲.html, .htm是靜態的,更容易讓引擎瞭解你網頁的內容。而動態網頁的內容是根據用戶,來輸出不同的內容,不容易讓引擎吸收具體HTML內容。

2. 如果不用URL Rewriting將拓展名隱藏或改成.html,那麼假如這個網站要換個技術或把動態頁面換成靜態,則需要尋找所有含有拓展名的連接,把連接所含URL進行拓展名修改(如從JSP 換到PHP技術,則要尋找所有含有.jsp的頁面,並把所有含.jsp的URL改成.php,費時費力)。URL Rewriting正好避免了這點,因爲好的URL是能做到“不變應完變”的。

3. 防止某些黑客惡意攻擊。有些大網站採用不同的技術開發不同功能的頁面。而把拓展名改掉,讓黑客無法確認此頁面用的技術是什麼,從而就無從下手。

4. 方便訪問者使用。訪問者不是程序員,他們不明白什麼是.jsp,.php.aspx,他們只知道URL。所以統一把拓展名拿掉,或者同意把拓展名換爲html,htm,有利於用戶的使用。用戶可以知道現在在你網站的位置,如何通過輸入URL到某一頁面。

實例:
Intelligencia.UrlRewriter.dll aspx重寫爲html實例
 
1、http://urlrewriter.net/   下載解壓縮後把Intelligencia.UrlRewriter.dll 文件添加引用到web工程裏。

2.web.config配置:

<configSections>
   <!--UrlRewriter-->
   <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
</configSections>
<system.web>
   <!--UrlRewriter-->
   <httpModules>
    <add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter" />
         </httpModules>
</system.web>
</system.web>
<!--UrlRewriter-->
<rewriter>
   <rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>
其中: <rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
若果code= abc的話,最終顯示的結果爲"虛擬目錄名稱/test_abc.html" 。如果吧.html替換成 .aspx那就是"虛擬目錄名稱/test_abc.aspx"

3.IIS配置:

如果是用"虛擬目錄名稱/test_abc.aspx" 的話,不需要配置IIS. 使用了"虛擬目錄名稱/test_abc.html" 配置IIS的方法如下:
http://urlrewriter.net/index.php/support/installation/windows-server-2003/ 裏面的圖9不準確,準確的爲:
還有第八步中的”untick Verify that file exists.“要看仔細。否則重寫HTML就無效。

4:備註

不要在"應用程序擴展"裏“添加" .html的映射,否則正常的html將無法訪問。
5.在vs2005中,傳多個參數應該加&amp;在vs2003中,只用分號就好了
eg.
<RewriterConfig>
    <Rules>
      <RewriterRule>
        <!--CreditNews BackGround update-->
        <LookFor>~NewsClsManage-(/d*)-(/d*).html</LookFor>
        <SendTo>~NewsClsManage.aspx?ClassID=$1&amp;flag=$2</SendTo>
      </RewriterRule>
    </Rules>
</RewriterConfig>

 相關:

http://blog.csdn.net/21aspnet/archive/2009/05/13/4178735.aspx

發佈了53 篇原創文章 · 獲贊 3 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章