1

目前正在使用名为 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 文件。

这是真的?如果是这样,我该如何手动覆盖重写规则,因为我必须添加允许重写中的查询字符串的能力?

4

1 回答 1

0

经过大量的惊愕和研究,我偶然发现了这个问题投票最高的答案,它现在对我有用,重写规则仍在 rewritemaps.config 中。

将 {REQUEST_URI} 更改为 {PATH_INFO}

于 2013-06-11T17:45:11.623 回答