1

我一直在尝试使用 IIS 8 上的 url 重写模块为我的两个 cfm 页面创建用户友好的 url。也就是说,由于规则或其他东西之间的相似性,似乎存在某种冲突。

这是我想要实现的目标。以下页面:

www.mywebsite.com/news.cfm?category=microsoft
www.mywebsite.com/news.cfm?category=apple
etc

www.mywebsite.com/blog.cfm?title=sometitle
www.mywebsite.com/blog.cfm?title=sometitle
etc

应该是这样的:

www.mywebsite.com/news/microsoft
or this
www.mywebsite.com/microsoft

www.mywebsite.com/blog/sometitle
or this
www.mywebsite.com/sometitle

你得到图片。

这是我的代码:

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

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

上面的规则不能一起工作,两个页面都重定向到第一个规则中设置的那个。这可以用一个规则完成还是我需要使用两个?我该如何解决这个问题?我非常感谢您对此提供的帮助。我在 Windows 和 IIS 8 上使用 ColdFusion 10。

4

0 回答 0