我正试图让它发挥作用。我有一个DNN模块,我从一个查询字符串中读取并执行几个步骤。所有这一切都很好。现在我正在尝试在读取查询字符串时清理URL
现在,URL看起来像这样:
http://mysite.website.com/?pid=1234
我希望它看起来像:
http://mysite.website.com/1234
这样的事情是否可能?
答案 0 :(得分:1)
最好为DotNetNuke使用正确的重写解决方案(例如iFinity UrlMaster以及其他人......)。
然后,您可以为模块编写自定义URL提供程序。
这就是我在我的网站上为重写部分文章模块所做的事情(例如www.ventrian.com/blog/
您可以在此处找到有关urlmaster的更多信息:
答案 1 :(得分:0)
查看使用URL重写器模块。 IIS6有几个第三方,但Microsoft为IIS7和IIS7.5提供了一个。您基本上使用正则表达式配置它并更改输出。
Microsoft的IIS7重写模块位于:http://www.iis.net/downloads/microsoft/url-rewrite
答案 2 :(得分:0)
我认为您正在寻找网址路由。请查看此链接以了解简介:http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx
答案 3 :(得分:0)
你有几个选择:
2a上。 IIS 7的URL重写模块&上述
2B。 HeliconTech的“ISAPI_Rewrite 3”(也有免费版本,可以很好地完成工作)
答案 4 :(得分: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过滤器的路径。