在发布的项目上使用IIS进行URL重定向

时间:2019-02-21 16:43:08

标签: .net asp.net-mvc iis url-rewriting

我有一个正在Visual Studio中构建的ASP.net MVP应用程序。

已发布的项目域将类似于http://example.com/ProjectName

在本地运行项目时,我有大量的URL正在使用,这些URL如下所示。

<a href="/foo/bar">Test</a>

这些在本地工作正常,但是当我发布项目时,它们中断了。例如,这将是重定向到我发布的版本上的内容:

http://example.com/foo/bar

当我想要它时:

http://example.com/ProjectName/foo/bar

我可以使用IIS和重写模块来解决此问题吗?我的尝试在下面。

<rewrite>
  <rules>
    <rule name="Index Rule" stopProcessing="true">
      <match url="./ProjectName/*" />
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>

2 个答案:

答案 0 :(得分:1)

如果使用剃须刀,请将URL更改为def clean(texte): return re.sub(r"[^0-9a-zA-Z]+", " ", texte).lower() 。如果您的网址是用js生成的,则可以将两者混合使用:

"~/foo/bar"

答案 1 :(得分:1)

请尝试以下操作:

<rule name="Index Rule" enabled="true" stopProcessing="true">
 <match url="^ProjectName/" negate="true" />
 <conditions>
  <add input="{HTTP_URL}" pattern="(.*)" ignoreCase="false" />
 </conditions>
 <action type="Rewrite" url="/ProjectName{C:0}" logRewrittenUrl="true" />
</rule>

请注意negate =“ true”属性。因此,此规则仅对“ / foo / bar”之类的资源有效,而对“ / ProjectName / *”之类的资源无效