目前正在使用名为 rewritemaps.config 的用于 URL 重写的外部文件(遵循这些说明),效果很好。但是,我们有时会用 web.config 中的手动条目覆盖该文件中的条目,但它们似乎不起作用。
具体来说,这个问题是围绕与谷歌一起使用内容实验(A/B 测试)而出现的,这在我的 URL 中大量使用了查询字符串。查询字符串采用以下形式:
websiteurl.com/webpage1?utm_expid=########-#&utm_referrer=http%3A%2F%2Fwebsiteurl.com%2F
现在在尝试验证我的内容实验时,我得到了错误
Web 服务器拒绝 utm_expid。您的服务器不支持在 URL 中添加查询参数。
...对于该特定 URL 来说是这样,因为在 rewritemaps.config 文件中我们有这一行:
<add key="/webpage1" value="/somefolder/file.aspx?id=18" />
重写规则工作正常,但 web.config 中的任何手动条目似乎都不起作用。如果我在 rewritemaps.config 中注释掉该行并尝试访问 /webpage1,则会出现 404 错误。这是预期的。但我尝试在我的 web.config 中使用手动条目,例如:
<rule name="test rewrite" stopProcessing="true">
<match url="^(https?:\/\/)?websiteurl.com\/webpage1(.*)*" />
<action type="Rewrite" url="{R:1}/somefolder/file.aspx?id=18" appendQueryString="false" />
</rule>
我之前放置了重写规则
<rewriteMaps configSource="rewritemaps.config" />
我已经添加了 query_string 条件,appendQueryString 为 true 和 false,即使我使用通配符 patternSyntax,也没有任何工作,所以它让我相信如果有外部 rewritemaps,我不能手动将重写规则添加到 web.config .config 文件。
这是真的?如果是这样,我该如何手动覆盖重写规则,因为我必须添加允许重写中的查询字符串的能力?