我正在使用IIS 8.0和Umbraco 7.我正在尝试制作这样的网址:testdomain.com/somecategory?page=2看起来像testdomain.com/somecategory/page/2。我创建了一个重写规则,但它不起作用我总是得到HTTP错误500.52 - URL重写模块错误。
<rule name="pageNationRule" stopProcessing="true">
<match url="(.+)/(page)/(\d+)(|/)$"/>
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}?{R:2}={R:3}"/>
</rule>
任何帮助都将不胜感激。
提前致谢,
答案 0 :(得分:1)
您必须在umbraco网站根目录的/ config文件夹中的 UrlRewrite.config 中设置这些规则。 要添加新规则:
<add name="produktidrewrite"
virtualUrl="^~/product/(.*).aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/product.aspx?productid=$1"
ignoreCase="true" />
或者您可以在代码中添加自定义路线。 创建一个继承自 Umbraco.Core.ApplicationEventHandler 的新类 覆盖 ApplicationStarted 以添加规则。像这样:
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
//Custom route
RouteTable.Routes.MapRoute(
"SomeName",
"Something/{action}/{id}",
new
{
controller = "ControllerName",
action = "Index",
id = UrlParameter.Optional
});
}
答案 1 :(得分:0)
错误可能是因为你在开场比赛标签中有一个额外/。 d&#39;哦
但是,要简化规则,您应该可以使用:
<rule name="pageNationRule" stopProcessing="true">
<match url="(.+)/page/(\d+)/?$" ignoreCase="true">
<action type="Rewrite" url="{R:1}?page={R:2}"/>
</rule>