带有CF轮和ColdFusion的Tuckey URL重写过滤器11

el-*_*ino 6 coldfusion cfwheels tuckey-urlrewrite-filter

我接管了一个在ColdFusion 10中使用CF Wheels构建的应用程序,它被设计为在Linux上运行.它使用Tuckey URL Rewrite过滤器来清理URL.我正在尝试在Windows机器上设置它并使用ColdFusion 11,但我遇到了Tuckey URL Rewrite过滤器的问题.

问题是它切断mcfm文件扩展名,因此ColdFusion会抛出File Not Found错误,因为当然没有"rewrite.cf"文件.我还注意到在调试输出中CGI.PATH_TRANSLATED变量以CG结尾rewrite.cf,而CGI.PATH_INFO以"m/[无论目录路径]"结尾,所以过滤器正在切断它应该重写的文件名.当我使用重写URL的"to"部分中的"反向引用"来传递目录路径时,似乎只会发生这种情况rewrite.cfm.如果我只是重定向到一个普通的cfm,而不进行反向引用,它工作正常.其他测试重写规则也可以正常工作,重写状态在我的localhost上看起来很好.有人有主意吗?

下面是我的规则urlrewrite.xml以及搞乱的PATH_TRANSLATED和PATH_INFO变量的截图.除了转移到Windows和CF 11之外,另一个区别是我在wwwroot("portal")的子目录中运行应用程序,但我已经在wwwroot级别应用了过滤器和规则,并在重写规则中指定了目录.

<rule>
    <note>Apply CFWheels URL rewriting for portal.</note>
    <condition type="request-uri" operator="notequal">^/portal/$</condition>
    <condition type="request-uri" operator="notequal">^/portal/favicon.ico$</condition>
    <condition type="request-uri" operator="notequal">^/portal/cfide(.*)$</condition>
    <condition type="request-uri" operator="notequal">^/portal/images(.*)$</condition>
    <condition type="request-uri" operator="notequal">^/portal/javascripts(.*)$</condition>
    <condition type="request-uri" operator="notequal">^/portal/stylesheets(.*)$</condition>
    <condition type="request-uri" operator="notequal">^/portal/rewrite.cfm(.*)$</condition>
    <from>^/portal/(.*)$</from>
    <to type="passthrough" last="true">/portal/rewrite.cfm/$1</to>
</rule>
Run Code Online (Sandbox Code Playgroud)

Tuckey重写问题