ASP.Net Umbraco中的URL重写

ASP.Net Umbraco中的URL重写,asp.net,url-rewriting,umbraco,Asp.net,Url Rewriting,Umbraco,我有一个像这样的URLwww.mydomain.com/brands/bname,我想把它改写成www.mydomain.com/bname,我做了一些类似的逻辑 <add name="301_bname" redirectMode="Permanent" redirect="Domain" ignoreCase="true" rewriteUrlParameter="IncludeQueryStringForRewrite" virtualUrl="htt

我有一个像这样的URL
www.mydomain.com/brands/bname
,我想把它改写成
www.mydomain.com/bname
,我做了一些类似的逻辑

<add name="301_bname" redirectMode="Permanent" redirect="Domain" ignoreCase="true"
        rewriteUrlParameter="IncludeQueryStringForRewrite"
        virtualUrl="http://(?:www.)??mydomain.com/brands/bname`"
        destinationUrl="www.mydomain.com/bname`" />

但问题是,只有当我硬编码
bname
时,这个bname才有效。在我的情况下,这个bname是动态的。我能做些什么来克服这个问题? 注意:我在URL重写方面是新手,所以如果您在我当前的代码中发现任何错误,您可以随时指出..

尝试:

<add name="301_bname" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite" virtualUrl="^~/brands/(.*)"
destinationUrl="~/$1" />

virtualUrl
参数使用正则表达式匹配传入URL。然后可以使用
$1
符号将模式传递给
destinationUrl
参数

由于这两个URL位于同一个域上,并且(我假设)在web应用程序中,您不需要
redirect=“domain”
部分,您可以使用相对URL路径。

尝试:

<add name="301_bname" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite" virtualUrl="^~/brands/(.*)"
destinationUrl="~/$1" />

virtualUrl
参数使用正则表达式匹配传入URL。然后可以使用
$1
符号将模式传递给
destinationUrl
参数


由于两个URL位于同一个域上,并且(我假设)在您的web应用程序中,您不需要
redirect=“domain”
部分,您可以使用相对URL路径。

如果您想将
/brandName\u x
重定向/重写到
/brands/brandName\u x
,您需要设置一个重定向到真实URL的虚拟URL

<add name="redirect_brands" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite"
virtualUrl="^/(.*)$" destinationUrl="^/brands/$1" />

在上面的一行中,virtualUrl正在寻找一个字符串“/brandName_x”,它将被重定向到“/brands/brandName_x”,这是实际节点所在的位置

要实现相反的效果,可以执行以下操作:

<add name="redirect_brands" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite"
virtualUrl="^/brands/(.*)$" destinationUrl="^/$1" />

如果要将
/brandName_x
重定向/重写到
/brands/brandName_x
,则需要设置一个重定向到真实URL的虚拟URL

<add name="redirect_brands" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite"
virtualUrl="^/(.*)$" destinationUrl="^/brands/$1" />

在上面的一行中,virtualUrl正在寻找一个字符串“/brandName_x”,它将被重定向到“/brands/brandName_x”,这是实际节点所在的位置

要实现相反的效果,可以执行以下操作:

<add name="redirect_brands" redirectMode="Permanent" ignoreCase="true"
rewriteUrlParameter="IncludeQueryStringForRewrite"
virtualUrl="^/brands/(.*)$" destinationUrl="^/$1" />


应用代码后,URL始终重定向到主页(主域),它不会直接回答您的问题,但如果您使用的是IIS7,您可以使用URL重写模块,这可能会让您的生活更轻松!应用代码URL后,URL始终重定向到主页(主域),它不会直接回答您的问题,但如果您使用IIS7,您可以使用URL重写模块,这可能会使生活更轻松!事实上,我想达到与你所说相反的效果。请检查问题并更正答案。还添加了相反的情况。但在最初的代码中,virtualUrl和destinationUrl中都有回标记。不确定这是否会奏效。对于Umbraco noobs,可以通过提及应在何处添加此选项来改进答案;)事实上,我想达到与你所说相反的效果。请检查问题并更正答案。还添加了相反的情况。但在最初的代码中,virtualUrl和destinationUrl中都有回标记。不确定这是否会奏效。对于Umbraco noobs,可以通过提及应在何处添加此选项来改进答案;)在Umbraco项目中,XML放在哪里?在Umbraco项目中,XML放在哪里?