asp.net中URL重寫(無尾碼名的重寫)

來源:互聯網
上載者:User

大家一定經常在網路上看到很多網站的地址尾碼都是用XX.HTML或者XX.ASPX等類似靜態檔案的標示來操作的吧,那麼大家有懷疑過他真的是一個一個的靜態產生的檔案麼,靜態檔案的產生的優缺有好有壞,對於訪問量很大的網站,利用靜態檔案可提高伺服器的運行穩定和速度,壞處就是產生列表的時候會因為增加一條記錄從而需要所有相關的列表進行重構,當然不排除有的公司已經攻克的這個問題,但對於福士程式員來說,他依舊是個問題,而且產生的化對於中小型網站也不一定會比動態號,因為管理比較麻煩。

結構以上事實,然後偽靜態技術產生了,規範的說就是URL重寫技術,他對於ASPX格式支援最好,當然也可以重寫HTML格式的檔案,但這需要IIS的設定,相對比來說,ASPX格式的更方便,本站就是採用了該URL重寫技術,這個技術優點顯而易見:方便搜尋引擎收錄,方便查看,等等。那麼接下來我們來看看如何配置他吧

首先、我們要用到URL重寫組件:URLRewriter.rar

其次、需要在WEB.CONFIG裡面進行些設定:

1、在Web.Config的<system.web>和</system.web>添加以下節點:

<httpModules>

  • <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" /> </httpModules>

      2、在Web.Config的<configuration>和</configuration>添加以下節點:

       

      <configSections>

    1. <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> </configSections>
    2. <RewriterConfig>
    3. <Rules> <RewriterRule>
    4. <LookFor>~/Read(.[0-9]*)\.aspx</LookFor> <SendTo>~/read.aspx?id=$1</SendTo>
    5. </RewriterRule> <RewriterRule>
    6. <LookFor>~/Read,(.[0-9]*),(.[0-9]*)\.aspx</LookFor> <SendTo>
    7. <![CDATA[~/read.aspx?id=$1&SmallSortID=$2]]> </SendTo>
    8. </RewriterRule> </Rules>
    9. </RewriterConfig>

        設定完以上兩個步驟,就基本可以運行了,其中<RewriterRule/>標籤裡面就是重寫的一個模組,<LookFor/>裡面的是重寫後的地址,而<SendTo/>則是原地址。大家應該注意到了我寫了2組<RewriterRule/>,其中第一組的是給單參數的地址用的,而另一組是給多參數動態檔案用的。

         

        用此方法注意:

        1.不能使用Windows身分識別驗證使用者權限. 應使用Form驗證,在web.config配置為:<authentication mode="Forms" />

        2.使用Request.ServerVariables["script_name"]獲得的路徑仍然是:ShowPlay.asp?vid=1

        3.被重寫的地址如果回傳,重寫將失效 顯示的地址將是ShowPlay.asp?vid=1

        4. 尾碼名必須為.aspx.如果是其他自訂尾碼名,如.net  請在iis將.net映射到aspnet_isapi.dll.這樣.net請求才能

        到達asp.net引擎.

        另外的一些提示:

        很多朋友應該看到過類似這樣的地址:

        http://nmju.net/read/2007/07/11/135645/

        其實這個也同樣的重寫,只是這個的使用必須要跟著建立相應的目錄,譬如上面的這個地址,你必須要建立READ、2007、07、11、135645這些目錄,雖然裡面不需要存在檔案,但建立還是有必要的

        (一)、副檔名不變的重寫:

        重寫規則:

        <add name="RewritePhoto" virtualUrl="^~/(\d+).aspx"

             rewriteUrlParameter="ExcludeFromClientQueryString"

             destinationUrl="~/Default.aspx?ID=$1"

             ignoreCase="true" />

        IIS配置:(此配置應該為預設配置,但有的虛擬機器主機供應商修改了此配置)

        網站->屬性->目錄->配置(G)...->映射->應用程式擴充->副檔名 .aspx ->編輯->"確認檔案是否存在"複選框不選

        (二)、偽靜態重寫,副檔名為.html等

        重寫規則:

        <add name="RewritePhoto" virtualUrl="^~/(\d+).html"

             rewriteUrlParameter="ExcludeFromClientQueryString"

             destinationUrl="~/Default.aspx?ID=$1"

             ignoreCase="true" />

        IIS配置:網站->屬性->目錄->配置(G)...->映射->應用程式擴充->添加

        可執行檔:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

        副檔名:.html

        動作:限制為 GET,HEAD,POST,DEBUG

        指令碼引擎:選中

        確認檔案是否存在:不選

        (三)、任意副檔名的重寫 如:副檔名為.zxjay

        重寫規則:

        <add name="Rewrite1" virtualUrl="^~/(\d+).zxjay"

             rewriteUrlParameter="ExcludeFromClientQueryString"

             destinationUrl="~/Default.aspx?ID=$1"

             ignoreCase="true" />  

        IIS配置:同上

        (四)、無尾碼的重寫

        重寫規則:

        <add name="Rewrite1" virtualUrl="^~/(\d+)/Default.aspx"

             rewriteUrlParameter="ExcludeFromClientQueryString"

             destinationUrl="~/Default.aspx?ID=$1"

             ignoreCase="true" />

        IIS配置:網站->屬性->目錄->配置(G)...->映射->萬用字元應用程式對應->插入

        可執行檔:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

        確認檔案是否存在:不選

        (五)、次層網域到多級網域名稱的重寫

        (注意:由於條件的限制,該規則沒有測試,理論上可以實現,如果有錯誤,請留言指正,謝謝!)

        重寫規則:

        <add name="Rewrite1" virtualUrl="^http\://(.*).xianfen.net/Default.aspx"

             rewriteUrlParameter="ExcludeFromClientQueryString"

             destinationUrl="~/Default.aspx?ID=$1"

             ignoreCase="true" />

      1. 相關文章

        聯繫我們

        該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

        如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

        A Free Trial That Lets You Build Big!

        Start building with 50+ products and up to 12 months usage for Elastic Compute Service

        • Sales Support

          1 on 1 presale consultation

        • After-Sales Support

          24/7 Technical Support 6 Free Tickets per Quarter Faster Response

        • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.