asp.net url重寫

asp.net url重寫css

今天研究了一天這個問題
想實現諸如:http://www.ziuziu.cn/2008/2/2
http://www.ziuziu.cn/default.html
等這種url
固然,程序直接生成靜態頁面能夠實現的
可是那樣要生成不少這種頁面以及文件夾
並且在數據量大的狀況下生成是很浪費時間的
在這種狀況下就要實現url重寫了,固然就不少種方法
下面介紹的是微軟的URLRewriter方法html

1.首先下載URLRewriter.dll,下載以後直接複製到你的網站的bin目錄中
下載地址 http://ziuziu.cn/download/URLRewriter.rar
2.配置你的web.config文件
在<configuration>節點下加
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>web

<RewriterConfig>
<Rules>
<!--一下三個是我本身寫的測試的,固然你能夠寫不少個 -->
<!--這個是把http://localhost:2001/default.aspx?id=1 生成http://localhost:2001/d1.aspx 這種頁面 -->
<RewriterRule>
<LookFor>~/d(\d{0,5})\.aspx</LookFor>
<SendTo>~/default.aspx?ID=$1</SendTo>
</RewriterRule>
<!--這個是把http://localhost:2001/article.aspx?id=1 生成http://localhost:2001/1/a.html 這種頁面 -->
<RewriterRule>
<LookFor>~/(\d{0,5})/a\.html</LookFor>
<SendTo>~/article.aspx?id=$1</SendTo>
</RewriterRule>
<!--這個是把http://localhost:2001/test.aspx?id=1 生成http://localhost:2001/1/ 這種頁面 -->
<RewriterRule>
<LookFor>~/(\d{0,5})/</LookFor>
<SendTo>~/test.aspx?id=$1</SendTo>
</RewriterRule>api

</Rules>asp.net

</RewriterConfig>測試

同時還要在<system.web>配置節下加
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />網站

</httpHandlers>url

3.好了,基本上就能夠了,可是還有重要一點千萬不要忘了
以上有三種狀況的url生成
針對第一種狀況,第一第二步配置完就能夠實現了
可對第二種和第三種url狀況,還須要進行一下配置
先說第二種狀況:由於我們重寫的是.html後綴
因此須要在iis中進行.html映射,方法以下:
右擊站點-屬性-主目錄-配置
在打開頁面找擴展名.aspx,雙擊以後彈出窗口內複製可執行文件
通常是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
複製完以後點添加在彈出窗口把內容複製到可執行文件
擴展名.html固然這個你能夠任意寫了,不過要和
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
保持一致.
同時去掉確認文件是否存在,肯定便可
完成以後輸入http://localhost:2001/1/a.html
是否是就能夠訪問了?爽吧.net

下面介紹第三種狀況,生成目錄
這裏面稍微有點複雜,一樣配置iis
仍是在那個彈出窗口,點插入
把複製的文件即C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
複製到可執行文件框內,同時去掉確認文件是否存在,肯定便可
這樣輸入http://localhost:2001/1/,是否是就能夠訪問了?嘿嘿
可能讀者會有疑問了:如今設置的這個和第二種設置的有什麼區別?
如今設置的實際上是進行*映射,即把全部的文件都進行url重寫處理程序處理
這時其實就能夠把.html 以及自帶的.aspx等映射去掉,一樣能夠生成.html/.aspx/ url
好了,若是還想其餘的擴展你們就盡情擴展吧。htm

4.如今再講一下*映射要注意的問題
由於*映射是把全部的文件都要交給url稱謝程序去處理,這樣就會形成會把站點下的圖片以及css
或者一些下載的rar等文件都要去處理,這樣會慢嗎?答案是毫無疑問的,確定會增長內存的,
單單一網站的圖片以及上傳的圖片就足以讓程序減慢成倍的速度了。
那有什麼辦法進行處理嗎?
固然,咱們能夠進行如下處理就能夠把速度還原了:
方法1,把存放圖片所在的文件夾轉化成一個虛擬目錄,在而後移處該虛擬目錄*.*的映射,這樣一來他的url重寫程序就不會去處理圖片文件,固然存放別的不須要url重寫程序的文件也要象圖片文件夾作相似的處理。
虛擬目錄設置辦法:在iis站點右擊目錄點屬性,目錄-點建立
而後點配置,在彈出窗口內刪除:通配符應用程序映射(執行順序)下添加的*.*的映射便可。
方法2,把不須要*.*映射的文件夾設置新站點和原來的站點分開,這樣在原來的站點訪問的時候用
新站點的域名便可。好比把圖片設置站點http://images.ziuziu.cn,這樣在http://ziuziu.cn站點訪問圖片的時候就必須使用http://images.ziuziu.cn/名稱.gif,這樣就避免了全部問件處理。
以上兩種方法便可提升很多速度了,固然第一種藥方便的多。

5.最後處理回發的狀況你們能夠在網上搜下便可。

文章出處:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008414/110348.html

相關文章
相關標籤/搜索