我使用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=([^=&]+)&id=([^=&]+)$" />
</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}&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
目前只有第一部分使用上面显示的规则。