我正在使用urlrewriter.net
我想要的网址就像/articles/3/name_of_article/articles.aspx
&安培; article是articles.aspx?article = 3;
(3只是采取,可以是任何数字)
我正在使用像这样的正则表达式
<rewriter>
<rewrite url="^/articles/(.+)/(.+)" to="/articles.aspx?article=$1" />
</rewriter>
它不起作用,如果我从引用中删除模块dll,那么也没有例外 抛出。
1)如何确保加载模块(通过代码)?
2)我的正则表达式是否正确?
我的web.config包含:
<configSections>
<section name="rewriter" requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,
Intelligencia.UrlRewriter" />
</configSections>
&安培;
<httpModules>
<add type="Intelligencia.UrlRewriter.RewriterHttpModule,
Intelligencia.UrlRewriter" name="UrlRewriter" />
<add name="ScriptModule"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
答案 0 :(得分:1)
2)我的正则表达式是正确的吗?
不,您应该将其更改为^/articles/([^/]+)/.+$
,否则第一次捕获将吞噬“3 / name_of_article”而不仅仅是“3”,并且您不需要第二个捕获组。您也可以使用捕获组中的非贪婪匹配来编写它,例如^/articles/(.+?)/.+$
。
答案 1 :(得分:0)
这根本不回答你的问题,但是你可能想知道。我曾经使用过UrlRewriter和ISAPI_Rewrite,而ISAPI_Rewrite在我看来要好得多。
您不必在web.config中包含任何引用或重写规则。而是在IIS中将其作为ISAPI扩展安装,并且它具有自己的配置文件,并且您编写的规则几乎与Apache mod_rewrite模块相同,因此如果您熟悉该模块,那么这是另一个优势。
此外,由于它在传递给.NET框架之前在Web服务器级别执行,因此不需要将其绑定到ASP.NET请求生命周期。
你可以在这里查看。 ISAPI_Rewrite 3