Coldfusion IIS重写

Coldfusion IIS重写,iis,url-rewriting,coldfusion,Iis,Url Rewriting,Coldfusion,我正在尝试映射如下URL: www.domain.com/some page.cfm?coid=1 要更方便用户,请执行以下操作: www.domain.com/some page/company name 或 www.domain.com/company name 我已经在IIS中反复尝试使用URL重写,但我一辈子都无法让它工作 任何帮助都将不胜感激 你看过这个了吗 或者,如果您想在没有IIS的情况下使用纯ColdFusion实现这一点,那么这个怎么样 some-page.cfm <!-

我正在尝试映射如下URL:

www.domain.com/some page.cfm?coid=1

要更方便用户,请执行以下操作:

www.domain.com/some page/company name

www.domain.com/company name

我已经在IIS中反复尝试使用URL重写,但我一辈子都无法让它工作


任何帮助都将不胜感激

你看过这个了吗

或者,如果您想在没有IIS的情况下使用纯ColdFusion实现这一点,那么这个怎么样

some-page.cfm

<!--- Test for query string params --->
<cfif StructKeyExists(url, "coid") and url.coid eq 1>
    <cflocation url="/some-page/company-name" addtoken="no">
<cfelse>
    <!--- Other processing here... --->
</cfif>

我想你可能真的想做相反的事情。。。使用IIS将
/abc.htm
请求映射到
/?id=abc
,对吗?(对于您请求的规则,我建议使用ColdFusion编写该规则。)

这里有一个IIS规则,我们使用它来避免在我们的博客URL中暴露“.cfm”。URL中“/blog/”之后的任何URL参数都可以作为
URL.WebPath
提供给ColdFusion。将保留其他URL参数。如果您对此进行修改,我建议您匹配URL模式(如“blog/”或“/detail-”),以便只重写指定的URL

<rewrite>
  <rules>
    <rule name="CFMBlog" patternSyntax="ECMAScript" stopProcessing="true">
      <match url="blog/(.*.htm)$" ignoreCase="true" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{PATH_INFO}" pattern="^.*(blog/index.cfm/).*$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/blog/index.cfm?WebPath={R:0}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>

在ColdFusion方面,您需要分析URL并确保其格式正确。您不希望两个版本的URL都响应,因为担心SEO重复(除非您设置URL规范化)。根据我的经验,最好将301永久重定向到小写、破折号分隔的“.htm”版本的URL


在您的CFM页面中,您需要添加一些逻辑来检查
.htm
是否位于
path\u info
中,
URL.COID
存在于原始请求中,而
URL.webpath
不存在。根据您的情况,您可以执行301重定向到URL的HTM版本,以便搜索引擎和用户都知道新的URL。

您尝试了什么?你的
web.config
看起来像什么?