2012-09-30 78 views
1

我想讓這個工作。我有一個DNN模塊,可以從查詢字符串中讀取並執行幾個步驟。所有這一切工作正常。現在,我想,而現在讀的查詢字符串不帶參數名稱的查詢字符串

清理URL,該URL看起來是這樣的:

http://mysite.website.com/?pid=1234 

我想它看起來像:

http://mysite.website.com/1234 

是甚至有可能這樣的事情?

+0

找出「ASP.NET MVC」 –

回答

0

看看使用URL重寫器模塊。有幾個第三方的IIS6,但微軟提供了一個IIS7和IIS7.5。你基本上用一個正則表達式來配​​置它並改變輸出。

微軟的IIS7重寫模塊,請訪問:http://www.iis.net/downloads/microsoft/url-rewrite

0

你有兩個選擇:

  1. 探索DNN可重寫功能,以及如何使用它們。它們可以在主機設置>高級設置>友好URL設置中找到。或者使用第二個選項,根據您正在使用的是哪個版本的IIS。

2a。用於IIS 7的URL重寫模塊&以上

2b。由HeliconTech提供的「ISAPI_Rewrite 3」(也有免費版本,它的功能相當不錯)

0

通過使用HttpModule,您可以完成您正在查找的內容而無需與DNN進行任何交互。有點像這樣:

public class PidRewriteModule : System.Web.IHttpModule 
{ 
    public void Dispose() 
    { 
    } 

    public void Init(System.Web.HttpApplication context) 
    { 
     context.BeginRequest += new EventHandler(context_BeginRequest); 
    } 

    void context_BeginRequest(object sender, EventArgs e) 
    { 
     HttpApplication app = sender as HttpApplication; 

     if (app != null) 
     { 
      Match mPidCheck = new Regex(@"^/(?<pid>[0-9]+)/?$").Match(app.Context.Request.Url.AbsolutePath); 
      if (mPidCheck.Success) 
      { 
       app.Context.RewritePath("~/default.aspx", String.Empty, String.Concat("pid=", mPidCheck.Groups["pid"].Value)); 
      } 
     } 
     else 
      return; 
    } 
} 

然後你就可以將它添加到你的web.config:

<modules runAllManagedModulesForAllRequests="true"> 
    <add name="PidRewriteModule" type="Assembly.Namespace.PidRewriteModule, Assembly"/> 
</modules> 

提出,在system.webServer節點。分別替換程序集和命名空間。

所有這些信息都是針對IIS7的。這對於IIS 6來說並不完全不同,但以前的實現必須採用ISAPI過濾器的路線。

1

對於使用DotNetNuke的正確重寫解決方案(例如iFinity UrlMaster,還有其他的...),你會更好。

然後,您可以爲您的模塊編寫自定義url提供程序。

這就是我在我的網站重寫我的文章模塊的部分進行(例如www.ventrian.com/blog/

您可以找到有關urlmaster這裏的更多信息:

http://www.ifinity.com.au/Products/Url_Master_DNN_SEO_Urls

相關問題