为什么 IIS 8.5 URL Rewrite 抛出 404 错误?

Why is IIS 8.5 URL Rewrite throwing a 404 error?

我们对文件结构进行了一些修改,因为我们发现我的另一个 and we now we're back where we've started. I have checked out this thread 中的结果存在问题,但该问题也没有答案。

我们希望 URL 在浏览器上显示:https://devbox.mysite.com/kb/article/test-article-1

下面是我的URL重写:

<rule name="Article-rewrite" enabled="true">
    <match url=".com/kb/article/(.*)$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Rewrite" url="https://devbox.mysite.com/kb/article/?artID={R:1}" appendQueryString="false" />
</rule>

我已启用失败请求跟踪来跟踪 IIS 上的重写规则,但是当我添加规则时,我没有看到重写作为一个选项,即使 instruction 显示它在那里。这是我的设置,它没有显示选项。无论如何,这只是诊断我的 url 重写问题的一个附带问题。

好的,所以我终于找到了问题的答案。匹配 URL 将匹配文件夹 kb/artitcle/ 并且 a-ZA-Z- 将只允许单词和破折号。在我的情况下,只会传递一个参数,所以我故意忽略了符号字符,因为在 CommonSpot CMS 中它添加了一个 &cs_pgIsInLView=1 到 URL 导致重写规则被破坏。因此,通过忽略这个符号,它适用于我的情况。当我尝试使用 url https://devbox.mysite.com/index.cfm?login=1 登录页面时,query_string 模式 1 将忽略重写。我想可能还有其他比这更好的方法,但就目前而言,这是必须的。

<rule name="Article-rewrite" enabled="true">
    <match url="^kb/article/([a-zA-Z\-]+)$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{QUERY_STRING}" pattern="1" negate="true" />
    </conditions>
    <action type="Rewrite" url="kb/article/?artID={R:1}" appendQueryString="false" />
</rule>