Regex 即使URL模式在测试中匹配,通过IIS重写模块重定向书签URL也无法正常工作

Regex 即使URL模式在测试中匹配,通过IIS重写模块重定向书签URL也无法正常工作,regex,url-rewriting,web-config,url-redirection,iis-10,Regex,Url Rewriting,Web Config,Url Redirection,Iis 10,我读过很多论坛,我尽我所能。我的出站规则在为SEO目的重写URL方面起作用,但在用户书签中标记的更改URL不起作用的情况下,我的重定向URL起作用。 我正在使用IIS 10.0 需要更改的URL: 致: 所以我唯一要更改的是字符串“files”到“assets” 以下是我尝试过的: 尝试1: <rule name="Redirect" stopProcessing="true"> <match url="(https?:\/\/[^\/]+)\/" />

我读过很多论坛,我尽我所能。我的出站规则在为SEO目的重写URL方面起作用,但在用户书签中标记的更改URL不起作用的情况下,我的重定向URL起作用。 我正在使用IIS 10.0

需要更改的URL:

致:

所以我唯一要更改的是字符串“files”到“assets”

以下是我尝试过的:

尝试1:

<rule name="Redirect" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/" />
   <conditions trackAllCaptures="true">
      <add input="{QUERY_STRING}" pattern="(https?:\/\/[^\/]+)\/files\/(.*)" />
      <add input="{REQUEST_URI}" pattern="^/assets" negate="true" />
   </conditions>
   <action type="Redirect" url="{R:1}/assets/{C:2}" appendQueryString="false" redirectType="Found" />
</rule>
<rule name="assets-to-files" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/files\/(.*)" />
   <action type="Redirect" url="{R:1}/assets/{C:1}" appendQueryString="false" logRewrittenUrl="true" />
   <conditions>
      <add input="{QUERY_STRING}" pattern="\/files\/(.*)" />
   </conditions>
</rule>

我试图确保第一个模式始终是域,第二个模式是文件

尝试2:

<rule name="Redirect" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/" />
   <conditions trackAllCaptures="true">
      <add input="{QUERY_STRING}" pattern="(https?:\/\/[^\/]+)\/files\/(.*)" />
      <add input="{REQUEST_URI}" pattern="^/assets" negate="true" />
   </conditions>
   <action type="Redirect" url="{R:1}/assets/{C:2}" appendQueryString="false" redirectType="Found" />
</rule>
<rule name="assets-to-files" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/files\/(.*)" />
   <action type="Redirect" url="{R:1}/assets/{C:1}" appendQueryString="false" logRewrittenUrl="true" />
   <conditions>
      <add input="{QUERY_STRING}" pattern="\/files\/(.*)" />
   </conditions>
</rule>

因此,每当我测试带书签的旧URL是否将更改为新URL时,它都不起作用。在IIS10中进行模式匹配测试时,它会亮起绿灯


我做错了什么

您可以在这里使用一个非常简单的规则:

<rule name="assets-to-files">
  <match url="^files/(.*)" />
  <action type="Rewrite" url="assets/{R:1}" />
</rule>
它将匹配字符串开头的
文件/
,然后将捕获到
{R:1}
除换行符以外的任何0个或更多字符


action
节点
url
属性中,您只需指定
assets/
新路径,并将捕获的内容附加到
{R:1}

您想要将
文件
重定向到
assets
,因此,请在@WiktorStribiż中尝试
错误1。非常感谢。我以前没有使用^1,因为它在测试模式中不起作用,但在实际重定向中起作用。太奇怪了为什么^在测试模式下不起作用。@GerleBatde太好了,我补充了这个作为答案。请考虑接受/支持。