2012-07-19 61 views
0

什麼是URL重寫在.NET 4我正在尋找一個簡單的解決方案,以重寫URL像URL在.NET 4

「myurl.com/ApplicationName/Kohls」的東西是最好的解決方案重寫「myurl.com/ApplicationName/index.html?store=Kohls」,所以我可以通過查詢字符串訪問var「Kohls」。

我目前使用Global.asax,它一直在爲上述案件工作 - 但我遇到麻煩的情況下,用戶將進入myurl.com/Application,沒有「/」或任何事情後應用。

目前,我有這樣的:

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     String CurrentURLPath = Request.Path.ToUpper(); 

     Match nothingAfterRoot = Regex.Match(CurrentURLPath, @"/ApplicationName(/)?$", RegexOptions.IgnoreCase); 
     if (nothingAfterRoot.Success) 
     { 
      HttpContext myContext = HttpContext.Current; 
      myContext.RewritePath("/ApplicationName/Default.aspx?store=ABC"); 
     } 
     else 
     { 
      Match match = Regex.Match(CurrentURLPath, @"/ApplicationName(/)?(\w)*$", RegexOptions.IgnoreCase); 
      if (match.Success) 
      { 
       CurrentURLPath = CurrentURLPath.Trim('/'); 
       String store= CurrentURLPath.Split("ApplicationName/".ToCharArray())[1]; 
       HttpContext myContext = HttpContext.Current; 
       myContext.RewritePath(String.Format("/ApplicationName/Default.aspx?store={0}", store)); 
      } 
     } 
    } 

回答

2

什麼是URL重寫在.NET 4

使用MVC框架,如果你可以選擇最佳的解決方案。 URL重寫是默認的。

對於傳統的asp.net網站,我用的是UrlRewritingNet.UrlRewriter.dll有以下我的web.config文件:

<configSections> 
    <section name="urlrewritingnet" restartOnExternalChanges="true" 
     requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, 
     UrlRewritingNet.UrlRewriter" /> 
</configSections> 

<system.web> 
    <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" 
     defaultPage="default.aspx" defaultProvider="RegEx"  
     xmlns="http://www.urlrewriting.net/schemas/config/2006/07"> 
     <rewrites> 
      <add name="ArticleUrlRewrite" virtualUrl="^~/a-(.*)-([\w-]*)\.aspx" 
       rewriteUrlParameter="ExcludeFromClientQueryString" 
       destinationUrl="~/article.aspx?id=$1" ignoreCase="true" /> 
     </rewrites> 
    </urlrewritingnet> 
</system.web> 
1

可以使用SHORTURL,DOTNET重寫一個URL像位。 LY/XXXXwww.mysite.com/index.htm

它改變默認的錯誤頁面的重定向文件,並根據若該值存在,它會將您重定向到真實的URL。

如果你有興趣在此解決方案,您可以找到更多的 http://sourceforge.net/projects/shorturl-dotnet/

using System; 
using System.Web; 

public partial class Redirection : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ShortUrl.Container oShortUrl; 

     if (ShortUrl.Utils.HasValue(Request.QueryString["page"].ToString())) // checks in case ISAPIRewrite is being used 
     { 
      oShortUrl = ShortUrl.Utils.RetrieveUrlFromDatabase(Request.QueryString["page"].ToString()); 
     } 
     else // using IIS Custom Errors 
     { 
      oShortUrl = ShortUrl.Utils.RetrieveUrlFromDatabase(ShortUrl.Utils.InternalShortUrl(Request.Url.ToString())); 
     } 

     if (oShortUrl.RealUrl != null) 
     { 
      Response.Redirect(oShortUrl.RealUrl); 
     } 
     else 
     { 
      Response.Redirect("MissingUrl.aspx"); 
     } 
    } 
} 
0

如上所述,MVC是一個好方法,如果它是一個選項。

如果你正在運行IIS 7,有可用的URL重寫模塊:

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/http://www.microsoft.com/en-us/download/details.aspx?id=7435

如果你正在運行IIS6,您可以使用urlrewritingnet如上所述,或如我喜歡,IIRF:

http://iirf.codeplex.com/

國防部重寫的相似性和基於正則表達式的規則使它非常powerfu l