C# url重寫及次層網域

來源:互聯網
上載者:User

 資料參考:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx

樣本:URLRewriter樣本.rar

 

=======================================Url重寫==========================================

1.首先下載URLRewriter.rar,下載之後直接複製到你的網站的bin目錄
2.配置你的web.config檔案
在<configuration>節點下加

 

Code
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
  </configSections>

  <!--轉寄規則-->
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/Url.html</LookFor>
        <SendTo>~/Url.aspx?id=aa</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

 

注意在web.config中把&換為&amp;否則不能執行

同時還要在<system.web>配置節下加

 

 

Code
<httpHandlers>
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    </httpHandlers>

 

最後配置IIS映射,右擊網站-屬性-主目錄-配置-插入,把複製的檔案即C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,

複製到可執行檔框內,同時去掉確認檔案是否存在,確定即可

 

3.*映射要注意的問題
因為*映射是把所有的檔案都要交給url稱謝程式去處理,這樣就會造成會把網站下的圖片以及css或者一些下載的rar等檔案都要去處理,造成效能不佳

解決辦法:

方法1,把存放圖片所在的檔案夾轉化成一個虛擬目錄,在然後移處該虛擬目錄*.*的映射,這樣一來他的url重寫程式就不會去處理圖片檔案,當然存放別的不需要url重寫程式的檔案也要象圖片檔案夾做類似的處理。
虛擬目錄設定辦法:在iis網站--右擊該目錄--屬性--目錄--建立--配置,在快顯視窗內刪除:萬用字元應用程式對應(執行順序)下添加的*.*的映射即可。
方法2,把不需要*.*映射的檔案夾設定新網站和原來的網站分開,這樣在原來的網站訪問的時候用
新網站的網域名稱即可。比如把圖片佈建網站http://images.abc.com/ 這樣在http://abc.com/網站訪問圖片的時候就必須使用http://images.abc.com/圖片名稱.gif,這樣就避免了所有問件處理。
以上兩種方法即可提高不少速度,當然第一種更方便。

4.最後處理回傳,即是指當我們在一個經過url重寫的頁面的提交返回後,一般情況下又返回了真實的路徑,而不是咱們處理過的url地址,這種情況就需要咱們在需要處理回傳(即提交表單的頁面)的頁面加上以下代碼即可:

 <script type="text/javascript">try{document.forms[0].action=""}catch(ex){}</script>

放在<form></form>裡面

比如http://www.abc.com/photo/50/show_1.html  這個頁面是經過url重寫之後的,使用者留言之後(提交表單)如果不做處理就變成了原始的路徑了,如:http://www.abc.com/photo/Detail.aspx?ptid=50&page=1 所以我們要處理回傳的情況。

 

=======================================次層網域======================================

微軟的URLRewrite能夠對URL進行重寫,但是也只能對網域名稱之後的部分進行重寫,而不能對網域名稱進行重寫,

如:可將 http://http://www.abc.com//1234/  重寫為 http://www.abc.com/show.aspx?id=1234 

但不能將 http://1234.abc.com/  重寫為  http://www.abc.com/show.aspx?id=1234。

要實現這個功能,前提條件:

1.  http://www.abc.com/ 是泛解析的,將*.abc.com做為A記錄綁定IP(這是網域名稱空間管理操作)

2. 當前網站為預設網站(即只需要輸入IP即可訪問),網站的第一個主機頭值必須為空白,否則會出現錯誤的請求。

3. 增加*映射(參照上面)
以上條件都滿足,則在web.config中增加

 

 

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

配置轉寄規則

 

Code
  <!--轉寄規則-->
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>http://(\w+).abc.com/</LookFor>
        <SendTo>~/Url.aspx?id=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

 

IE地址欄輸入http://1234.abc.com/,則實際訪問的是http://www.abc.com/URL.aspx?id=1234

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.