2011-06-08 36 views
2

我目前使用IIS7的Url重新寫模塊,但使用IIS7的url重寫模塊的主要漏洞是,我必須爲所有頁面編寫規則,我想要使用它在網站上,我想使用comman規則,並將其重定向到特定頁面(稱爲主頁),並使用global.asax我可以將其重定向到所需的頁面...Urlrewrite在asp.net

是否有可能與url重寫或是有任何工具可用於此目的,或者可以幫助我這樣做的代碼示例。

我不想在URL中擴展。

我有像index.aspx,news.aspx,artists.aspx,lessons.aspx這樣的頁面...我想要索引,新聞,課程,藝術家等網址,我在web.config中創建了一個規則,如

< rewrite> 
< rules> 
    < rule name="urlType1"> 
    < match url="^(\w*)" /> 
    < action type="Rewrite" url="default.aspx" appendQueryString="false" /> 
    < /rule> 
< /rules> 
< /rewrite> 

這將土地的任何頁面Default.aspx的,然後在Global.asax使用rawUrl,我很喜歡,如果用戶輸入檢查頁面的「新聞」,然後我重寫news.aspx

希望這有助於。

回答

1

你可以做,就像你在你的問題建議 - 重定向到單個URL的所有請求: ,然後在Global.asax中,你可以調用Server.Transfer的(「 〜/ file1.aspx「)將請求轉發到一個特定的文件。

或者,您可以直接從URL重寫規則並跳過Global.asax文件中的進一步處理。舉例來說,此規則將讀取沒有文件擴展輸入URL,然後在將請求轉發到具有文件擴展名的文件:

 <rule name="Append a file extension to all requests discard querystring" stopProcessing="true"> 
      <match url="^(.*)\?" /> 
      <action type="Rewrite" url="{R:1}.aspx" /> 
     </rule> 

瞭解更多關於URL在http://ruslany.net/上魯斯蘭Yakushev的博客重寫規則。

-1

好的,所以對於你所要求的......就我所知,你確實需要爲每個頁面創建一個特定的重寫規則。

/新聞

其路由到

/default.aspx

它調用NewsController.Index並顯示:當我沿着MVC,當你走到哪裏的線條思維更來自default.aspx的新聞頁面。但是,要真正將所有內容分解成單獨的頁面,並試圖刪除擴展名......就我所知,必須爲每個實例創建一個新規則。

可以從web.config文件配置重定向規則。

例如下面是WordPress的確實在隨機配備的WordPress的web.config文件:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
       <rule name="wordpress" patternSyntax="Wildcard"> 
        <match url="*"/> 
         <conditions> 
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> 
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> 
         </conditions> 
        <action type="Rewrite" url="index.php"/> 
       </rule></rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

的路由所有流量index.php頁面。然後,index.php文件將讀取URL的內容並根據URL提取數據。在重定向之後,它不會將其重定向到其他頁面,而是決定顯示哪些內容。

MVC線沿線的作品,你看這個網址:

/news   > will call > NewsController.Index(); 
/news/index > will call > NewsController.Index(); 
/news/view > will call > NewsController.View(); 
/news/read/id > will call > NewsController.Read(id); 

這些控制器,則通常從數據庫獲取數據和數據應用到「視圖」(HTML的某處坐在頁帶有變量的服務器顯示控制器傳遞給它的數據)。

+0

感謝您的回覆,我已更新我的問題,請看看 – Abbas 2011-06-08 18:30:46

+0

已編輯的帖子。不幸的是,不知道如何進行確切的配置,而無需重寫。 – 2011-06-08 18:59:13

+0

你可以詳細說明你要求的MVC,哪些路由到default.aspx並調用NewsController.Index並在default.aspx – Abbas 2011-06-08 19:01:30