IIS 7 URL重写 - 如何为2个类似的URL创建规则

时间:2014-06-09 14:12:48

标签: iis web-config

我使用IIS 7.5中的web.config文件为网站创建了友好的URL。

我为文章页面创建了一条规则,如下所示:

            <rule name="RedirectUserFriendlyURL10" stopProcessing="true">
                <match url="^articles\.php$" />
                <conditions>
                    <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                    <add input="{QUERY_STRING}" pattern="^title=([^=&amp;]+)&amp;id=([^=&amp;]+)$" />
                </conditions>
                <action type="Redirect" url="articles/{C:1}/{C:2}" appendQueryString="false" />
            </rule>
            <rule name="RewriteUserFriendlyURL10" stopProcessing="true">
                <match url="^articles/([^/]+)/([^/]+)/?$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="articles.php?title={R:1}&amp;id={R:2}" />
            </rule>

这很好用。 友好URL的示例如下所示:http://www.example.com/articles/name_of_article/2104

现在我的客户想要添加一个&#39;着陆页&#39;这将列出所有文章,而不是直接转到单个文章。 他们想要链接阅读http://www.example.com/articles或类似的东西。

现在我已经更改了pages.php页面上的代码,这样如果查询字符串中没有传递id,或者查询字符串id为0,那么页面将根据需要显示文章列表...如果有id,它将只显示该特定文章。

我的问题是,如何编写规则以便正确地重写URL 例如     http://www.example.com/articles.php?id=2104&title=name_of_article     变     http://www.example.com/articles/name_of_article/2104

和     http://www.example.com/articles.php?id=0     变     http://www.example.com/articles

目前只有第一部分使用上面显示的规则。

0 个答案:

没有答案