0

我已经看到了一千个这样的例子:

<rule name="ex1" enabled="false" stopProcessing="true">
    <match url="^article/([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="article/{R:1}.html" />
</rule>

我可以很容易地开始工作。然而,我想要做的是让 www.mydomain.net/test 重写为 www.mydomain.net/test.html 我试图使用下面的配置。

<rule name="ex2" enabled="true" stopProcessing="true">
    <match url="^/([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="/{R:1}.html" />
</rule>

不幸的是,我没有取得任何成功,每次尝试我都会得到一个简单的 404。虽然,当我测试我的正则表达式时,它对于我希望匹配的任何东西都是成功的 - 例如 www.mydomain.net/test。

任何人都可以提供任何关于为什么会这样的见解吗?

(使用 Win7、IIS7 Ultimate)。

4

1 回答 1

1

You might try matching on this instead:

"^([^/]+)/?$"

And replacing with this:

{R:1}.html

I'm not certain, but I don't think IIS matches on the leading / so that might be what is tripping up your rewrite.

Example: http://regexr.com?36jiq

于 2013-10-04T06:02:16.537 回答