IIS 301 从一个控制器重定向到另一个控制器(包括参数)ASP.NET MVC
IIS 301 Redirect from one Controller to another (including parameters) ASP.NET MVC
我重命名了我的一个控制器,现在想对新的 URL 做一个 HTTP 301
。我更喜欢从 IIS 执行此操作,这样我就不会污染我的 RouteConfig
。我还想包括重定向中包含的任何参数。
我正在努力实现以下所有目标:
site.com/old
--> 301 site.com/new
site.com/old/
--> 301 site.com/new/
site.com/old?foo=bar
--> 301 site.com/new?foo=bar
- 等等
这是我目前拥有的,但我无法让它工作:
<rule name="Redirect Old to New" pattern="ECMAScript" stopProcessing="true">
<match url=".*\/old.*" />
<action type="Redirect" redirectType="Permanent" url="/new/{R:0}" />
</rule>
问题似乎与您的正则表达式有关。此上下文中的 URL 永远不会以 /
开头,您应该始终匹配字符串 ^
的开头。此外,您需要定义要捕获的内容以提供重定向的结尾 URL.
<rule name="301 Redirect Old to New">
<!--
matches /old
matches /old?foo=123
matches /old/?foo=123
matches /old/older/oldest?foo=123
doesn't match /oldee/whatever
-->
<match url="^old(?:/|(?=\?)|$)(.*)"/>
<action type="Redirect" redirectType="Permanent" url="new/{R:1}"/>
</rule>
此外,出于 SEO 的目的,我会说您选择第二个选项是搬起石头砸自己的脚。您应该 总是 使用尾部斜杠或 从不 在您的重定向中使用斜杠。选择一个然后保持一致,这样您所有的着陆点 URL 都是相同的。
虽然使用 IIS 进行 301 重定向本身没有任何问题,但如果采用这种方法,您应该确保自己足够熟练地创建正则表达式。如果您有一个正则表达式测试器实用程序,它也会有所帮助,以确保您正在编写的内容按照您期望的方式工作。
这里有学习正则表达式的好教程:http://www.regular-expressions.info/tutorial.html
我重命名了我的一个控制器,现在想对新的 URL 做一个 HTTP 301
。我更喜欢从 IIS 执行此操作,这样我就不会污染我的 RouteConfig
。我还想包括重定向中包含的任何参数。
我正在努力实现以下所有目标:
site.com/old
-->301 site.com/new
site.com/old/
-->301 site.com/new/
site.com/old?foo=bar
-->301 site.com/new?foo=bar
- 等等
这是我目前拥有的,但我无法让它工作:
<rule name="Redirect Old to New" pattern="ECMAScript" stopProcessing="true">
<match url=".*\/old.*" />
<action type="Redirect" redirectType="Permanent" url="/new/{R:0}" />
</rule>
问题似乎与您的正则表达式有关。此上下文中的 URL 永远不会以 /
开头,您应该始终匹配字符串 ^
的开头。此外,您需要定义要捕获的内容以提供重定向的结尾 URL.
<rule name="301 Redirect Old to New">
<!--
matches /old
matches /old?foo=123
matches /old/?foo=123
matches /old/older/oldest?foo=123
doesn't match /oldee/whatever
-->
<match url="^old(?:/|(?=\?)|$)(.*)"/>
<action type="Redirect" redirectType="Permanent" url="new/{R:1}"/>
</rule>
此外,出于 SEO 的目的,我会说您选择第二个选项是搬起石头砸自己的脚。您应该 总是 使用尾部斜杠或 从不 在您的重定向中使用斜杠。选择一个然后保持一致,这样您所有的着陆点 URL 都是相同的。
虽然使用 IIS 进行 301 重定向本身没有任何问题,但如果采用这种方法,您应该确保自己足够熟练地创建正则表达式。如果您有一个正则表达式测试器实用程序,它也会有所帮助,以确保您正在编写的内容按照您期望的方式工作。
这里有学习正则表达式的好教程:http://www.regular-expressions.info/tutorial.html