我的公司在去年10月推出了重新设计的网站版本。我们有一个正常的ASP.NET域设置,但是一些页面被重命名并移动到新的位置,因此我们不得不依赖Server 2012中的URL Rewrite模块来确保书签路由到正确的位置。
在大多数情况下,基于正则表达式模式或重写地图的1:1 URL匹配工作正常并且正如您所期望的那样。但是,我们还有一些旧的目录,我不得不移动,这不是重新设计项目的一部分。我将这些文件夹移到根目录下的文件夹中,如:
$/sandbox/annualreport/
这样我们就可以监控和更新所有未在一个地方重新设计的文件夹。我正在使用的删节重写条目是:
<rewrite>
<rules>
<clear />
<rule name="Sandbox URLs">
<match url="^(annualreport)\b/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="sandbox/{R:1}/{R:2}" />
</rule>
</rules>
</rewrite>
当目录后跟一个尾部斜杠时,这适用于所有URL,例如$/sandbox/annualreport/
,但是当尾部斜杠没有被删除时,即{/ 1}},即使/是可选的。页面加载并且可以正确访问它们,但问题是,其中一些目录具有本地css,图像和脚本,可以在HTML中访问$/sandbox/annualreport
或{{1 }}。当我查看源并单击那些样式或js链接时,重写会从根目录中查找这些文件,除非添加了尾部斜杠。
这已成为麻烦,因为我必须为每个“沙箱URL”(在此重写条目之前)添加301重定向以添加尾部斜杠。这有效,但我必须在正则表达式中指定每个文件夹名称:
href="css/main.css"
我已经尝试过默认的URL Rewrite向导来普遍添加一个尾部斜杠,我更喜欢这个但是它似乎没有修复本地化文件的问题:
src="scripts.js"
如何在URL重写时强制添加尾部斜杠,同时在重写目录中维护本地访问的文件?
非常感谢任何帮助。感谢。