我是。net和IIS的新手,我正在尝试用这种模式/([^/]+)(?=/[^/]+/?$)
进行正则表达式重定向,因此我的url将从mysite.com/en/solutions/exemple
到mysite.com/en/exemple
,但在重定向IIS中将/服务放在我的url中,有人认为如何解决这个问题?
下面是IIS 7在我的web.config
中生成的规则
<rewrite>
<rules>
<rule name="redirect salesforce" stopProcessing="true">
<match url="/([^/]+)(?=/[^/]+/?$)" />
<action type="Redirect" url="/en/{R:0}/coveo-for-salesforce" appendQueryString="false" />
</rule>
</rules>
</rewrite>
Thanks
更新:I tried
<rewrite>
<rules>
<rule name="remove solutions from url" stopProcessing="true">
<match url="^([^/]+)(/[^/]+)(/.*)" />
<action type="Redirect" url="/{R:0}{R:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
我得到一个not not found
请注意,我正在研究一个Sitecore解决方案与2种语言en和for
如果你想从url中删除第一级文件夹,例如:
/en/solutions/example-page ->/en/example-page
/en/other-folder/another-page ->/en/another-page
/fr/one-more-folder/blah-page ->/fr/blah-page
与301重定向代码,使用以下规则:
<rewrite>
<rules>
<rule name="remove solutions from url" stopProcessing="true">
<match url="^([^/]+)(/[^/]+)(/.*)" />
<action type="Redirect" url="/{R:1}{R:3}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
如果你想用301
代码从mysite.com/en/solutions/exemple
重定向到mysite.com/en/exemple
(所以实际上从所有url中删除solutions
(但只有当它们直接在语言之后),你可以使用:
<rewrite>
<rules>
<rule name="remove solutions from url" stopProcessing="true">
<match url="^([^/]+)/solutions(/.*)" />
<action type="Redirect" url="/{R:1}{R:2}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
我已经在Sitecore应用程序上测试了这个解决方案,它绝对有效。