尝试添加尾部斜杠时,IIS URL重写模块问题

时间:2014-10-20 18:34:12

标签: asp.net mod-rewrite iis rewrite

我的公司在去年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重写时强制添加尾部斜杠,同时在重写目录中维护本地访问的文件?

非常感谢任何帮助。感谢。

0 个答案:

没有答案