2011-08-24 60 views
1

我是iis網址重寫模塊中的新成員,我不是如何執行此操作。重寫所有網址將aspx擴展名更改爲html

,比如我有這個網址:

http://localhost/section.aspx?x=section1&IDSection=45 

,我想這一點:

http://localhost/section~x~section11~IDSection~45.html 

任何想法? 感謝您的幫助。

+0

我能否提供使用[路由](http://msdn.microsoft.com/en-us/magazine/dd347546.aspx),並且具有諸如'HTTP一個url://本地主機/部分/ 1/45' –

+0

我的網址已經很好地定位於這種格式,如果我改變了,這可能會影響我的排名。 問題是因爲我從iis6遷移到iis7。 – camaya

+1

使用波形符號「(?)」代替問號「(?)」並不能真正使您的查詢字符串變得更漂亮。事實上,我認爲它更不直觀。不僅如此,但任何你改變你的url字符串的方式,你正在影響排名。 –

回答

0

這是在使用IIS7 URL重寫模塊的溶液:

  • 創建新的空白入站規則
  • 的模式是:^部〜X〜([_ 0-9A-Z - ] +)〜 。IDSection〜([0-9] +)的html
  • 重寫動作:Section.aspx X = {R 1}?& IDSection = {R:2}
  • 創建新黑色outbund規則
  • 創建新格式的新前提:
    • 條件輸入:{RESPONSE_CONTENT_TYPE}
    • 圖樣:^ text/html的
  • 的模式是:^ Section.aspx \ X =([_ 0-9A-Z - ] +)(?: & | &)IDSection =([0-9] +)$
  • 而重寫動作:節〜X〜{R:2}〜IDSection〜{R:2} .HTML
0

你需要做的是寫一個處理程序。這樣你可以捕獲擴展,然後根據需要解析它。這對用戶是不可見的。 Handler絕對是您想要的方式,就像您使用URL路由一樣,您仍然需要在IIS中將處理程序從aspx更改爲html。

+0

我會看這個解決方案 – camaya

0

可以做到這一點在c#中在ASP.NET中的URL中使用自定義擴展。

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
    HttpApplication app = sender as HttpApplication; 
    if (app.Request.Path.ToLower().IndexOf(".html") > 0) 
    { 
     string rawpath = app.Request.Path; 
     string path = rawpath.Substring(0, rawpath.IndexOf(".html")); 
     app.Context.RewritePath(path+".aspx"); 
    } 
} 
相關問題