Helicon Ape .htaccess RewriteRule 修改内容类型的解决方法问题

Workaround issue of Helicon Ape .htaccess RewriteRule from modifying Content Type

问题:

在 IIS7.5 中使用 .htaccess,使用带有最后一个 RewriteRule 的 Helicon Ape,当 Chrome 检查员查看时,它会在未注释的情况下从响应 Headers 中删除 Content-Type(参见示例下面的屏幕截图)。这发生在 /flex2gateway/ 路径应该产生 Content-Type of application/x-amf:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^.*/index.cfm/(.*)$ [NC]
RewriteRule ^.*/index.cfm/(.*)$ ./rewrite.cfm/ [NS,L]
RewriteCond %{REQUEST_URI} !^.*/(flex2gateway|jrunscripts|cfide|cfformgateway|cffileservlet|railo-context|lucee|files|images|javascripts|miscellaneous|stylesheets|robots.txt|favicon.ico|sitemap.xml|rewrite.cfm)($|/.*$) [NC]
RewriteRule ^(.*)$ ./rewrite.cfm/ [NS,L]

最后一个 RewriteRule 的结果:

应有的结果或最后一个 RewriteRule 被注释掉时的结果

我尝试了多种解决方法,包括添加以下内容,但没有解决问题:

RewriteRule ^flex2gateway/$ [NS,T=application/x-amp,L]

看起来文件夹 flex2gateway 确实存在,当您尝试获取“/flex2gateway/”路径时,它会尝试 return 目录列表。

尝试为此添加规则:

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} ^.*/(flex2gateway|jrunscripts|cfide|cfformgateway|cffileservlet|railo-context|lucee|files|images|javascripts|miscellaneous|stylesheets)(/?)$[NC]
RewriteRule ^(.*)$ ./rewrite.cfm/ [NS,L]

这将重定向到“./rewrite.cfm/$1”脚本。将此更改为您的首选目标。

我终于弄明白了,当然这是一个简单的修复!

只需将 jakarta| 添加到 RewriteCond 模式:

RewriteCond %{REQUEST_URI} !^.*/(jakarta|flex2gateway|jrunscripts|cfide|cfformgateway|cffileservlet|railo-context|lucee|files|images|javascripts|miscellaneous|stylesheets|robots.txt|favicon.ico|sitemap.xml|rewrite.cfm)($|/.*$) [NC]

ColdFusion 10 现在使用 /jakarta/isapi_redirect.dll 处理 flex2gateway 路径。