为什么IIS 8.5 URL重写会引发404错误?

时间:2016-02-18 20:56:37

标签: url-rewriting iis-8

我们已经修改了我们的文件结构,因为我们在其他thread中发现了结果问题,现在我们又回到了我们已经开始的地方。我已经检查了这个thread,但也没有回答这个问题。

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

以下是我的网址重写:

<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显示它在那里。这是我的设置,它没有显示选项。无论如何,这只是诊断我的网址重写问题的一个侧面问题。

enter image description here

1 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了问题的答案。匹配URL将匹配文件夹kb / artitcle /,而a-ZA-Z-将仅允许单词和短划线。在我的情况下,只会传递一个参数,所以我故意忽略&符号,因为在CommonSpot CMS中它会在URL的末尾添加&amp; cs_pgIsInLView = 1 ,这会导致重写规则打破。因此,忽略这个&符号,它适用于我的情况。当我尝试使用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>