我正在接管一个 ColdFusion 应用程序,但我在重写时遇到了一些麻烦。
该站点位于 IIS7/CF9.0.1/SQL Server 堆栈上。Helicon 经理正在处理重写。
大多数 URL 都写入一个 html 文件,所以我们会有类似 /profile.html 的内容
URL 被这一行重写:
RewriteRule /([^\?]*?)\.(html)(\??)(.*)? /default.cfm?name=$1.$2&$4 [I]
当有像 /view.html?id=123 这样的查询字符串时,就会出现问题。查询字符串应该由 $4 变量写入,但是当我像这样转储 URL 时,我在应用程序中什么也得不到:
<cfset objRequest = GetPageContext().GetRequest() />
<cfset strUrl = objRequest.GetRequestUrl().Append(
"?" & objRequest.GetQueryString()
).ToString()
/>
<cfoutput>#strUrl#</cfoutput>
我得到类似的东西:http://10.211.55.6/default.cfm?name=view.html&。查询字符串永远不会出现。
我相信这是一个 IIS 设置 - 可能允许 .html 处理程序访问 GET 变量?我已经设置了一个 .html 处理程序,但没有运气。