我有一个正在Visual Studio中构建的ASP.net MVP应用程序。
已发布的项目域将类似于http://example.com/ProjectName
在本地运行项目时,我有大量的URL正在使用,这些URL如下所示。
<a href="/foo/bar">Test</a>
这些在本地工作正常,但是当我发布项目时,它们中断了。例如,这将是重定向到我发布的版本上的内容:
当我想要它时:
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>
答案 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 / *”之类的资源无效