我想讓這個工作。我有一個DNN模塊,可以從查詢字符串中讀取並執行幾個步驟。所有這一切工作正常。現在,我想,而現在讀的查詢字符串不帶參數名稱的查詢字符串
清理URL,該URL看起來是這樣的:
http://mysite.website.com/?pid=1234
我想它看起來像:
http://mysite.website.com/1234
是甚至有可能這樣的事情?
我想讓這個工作。我有一個DNN模塊,可以從查詢字符串中讀取並執行幾個步驟。所有這一切工作正常。現在,我想,而現在讀的查詢字符串不帶參數名稱的查詢字符串
清理URL,該URL看起來是這樣的:
http://mysite.website.com/?pid=1234
我想它看起來像:
http://mysite.website.com/1234
是甚至有可能這樣的事情?
看看使用URL重寫器模塊。有幾個第三方的IIS6,但微軟提供了一個IIS7和IIS7.5。你基本上用一個正則表達式來配置它並改變輸出。
微軟的IIS7重寫模塊,請訪問:http://www.iis.net/downloads/microsoft/url-rewrite
你有兩個選擇:
2a。用於IIS 7的URL重寫模塊&以上
2b。由HeliconTech提供的「ISAPI_Rewrite 3」(也有免費版本,它的功能相當不錯)
通過使用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過濾器的路線。
對於使用DotNetNuke的正確重寫解決方案(例如iFinity UrlMaster,還有其他的...),你會更好。
然後,您可以爲您的模塊編寫自定義url提供程序。
這就是我在我的網站重寫我的文章模塊的部分進行(例如www.ventrian.com/blog/
您可以找到有關urlmaster這裏的更多信息:
找出「ASP.NET MVC」 –