将URL重写存储在单独的文件中是否会覆盖手动条目



目前正在处理一个名为rewritemaps的外部URL重写文件。配置(按照这些说明),它工作得很好。然而,我们有机会用web中的手动条目覆盖该文件中的条目。

具体来说,这个问题出现在谷歌的内容实验(A/B测试)中,它在我的url中大量使用查询字符串。查询字符串的形式为:

websiteurl.com/webpage1?utm_expid=########-#&utm_referrer=http%3A%2F%2Fwebsiteurl.com%2F

现在,当尝试验证我的内容实验时,我得到错误

Web服务器拒绝utm_expid。您的服务器不支持添加查询

…这对于那个URL是正确的,因为在rewritemaps中。配置文件中有这一行:

<add key="/webpage1" value="/somefolder/file.aspx?id=18" />

重写规则工作良好,但没有数量的手动条目在web。配置似乎工作。如果我在rewritemaps中注释掉这行。配置并尝试访问/webpage1,错误提示404..这是意料之中的。但我尝试在我的网页中使用手动条目。配置:

<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,也没有任何工作,所以它让我相信我不能手动添加重写规则到web中。如果存在外部重写映射,请配置。配置文件。

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

经过大量的恐慌和研究,我偶然发现了这个问题和最高投票的答案,它现在为我工作,重写规则仍然在rewritemaps.config中。

将{REQUEST_URI}更改为{PATH_INFO}

最新更新