使用 ColdFusion 重写 IIS URL 会保留重复字符串



我已经设置了一个URL重写,当我手动设置或输入URL时,它可以正常工作。但是,例如,当我在页面中使用<cfoutput>标签中的链接时,该链接会复制字符串。

我正在使用 ColdFusion 2016 和 IIS 10

例如,网址是

www.site.com/results.cfm?lang=1&categoryid=2&budegtid=all&typeid=all&propertyid=316

我希望它输出像

www.site.com/properties/en/all/all/all/316

它有效,但是当我使用设置链接时似乎很开心......<cfoutput>使用查询...

<cfif getProps.recordcount>
<cfoutput query = "getProps" startrow="#url.start#" maxrows="#perpage#">
<a href="property/#lang#/#category_id#/#budgetid#/#typeid#/#getProps.property_id#" id="listVewButton">View</a>
</cfoutput>

页面上链接中的结果输出为www.site.com/properties/en/all/all/all/316/properties/en/all/all/all/316

我已将网络/配置设置为

<?xml version="1.0" encoding="UTF-8"?>  
<configuration>  
<system.webServer>
<directoryBrowse enabled="false" />
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<rewrite>
<rules>
<rule name="Property list URL rewrite">
<match url="^property/([_0-9a-z-]+)/([_0-9a-z-]+)/budget-range-([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="resultsproperty.cfm?lang={R:1}&amp;categoryid={R:2}&amp;budegtid={R:3}&amp;typeid={R:4}&amp;propertyid={R:5}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Detailed" />
</system.webServer>
</configuration>

ColdFusion cfquery 如下...

<cfquery name="getProps" datasource="#session.odbcname#">
SELECT  *
FROM    properties P
INNER JOIN areas A
ON      A.area_id = P.property_areaid
INNER JOIN categories C
ON      C.category_id = P.property_propcategoryid
INNER JOIN  price R
ON      R.price_id = P.property_regularity
INNER JOIN types T
ON      T.type_id = P.property_proptypeid
WHERE   P.property_status != 'Off Market'
<cfif url.ref is not "all">
AND     
(
property_ref like <cfqueryparam cfsqltype="cf_sql_varchar" value="%#url.ref#%">
OR property_refid like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%#url.ref#%">
OR property_town like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%#url.ref#%">
)
</cfif>
ORDER   BY P.property_refid

它似乎首先拉入实际的URL,然后添加重写。

任何帮助非常感谢。

您需要用正斜杠开始 href 以指示它来自根目录。href 在浏览器中解析/解释。不以正斜杠开头会告诉浏览器该 url 是相对于当前路径的。

例如,如果您在http://example.com/admin/并且有一个 hreflogout,它将被解析为http://example.com/admin/logout.但是,如果您有 href/logout它将解析为 'http://example.com/logout

正如你自己的答案所说,强制绝对路径是有效的,有时可以首选,但有时不是。 确保您了解根本问题。

通过在 coldfusion 应用程序文件中预先设置 URL 根来解决!即<cfset request.root = 'http://www.example.com/'>,然后在链接中引用#request.root#var,它会正确使用链接并且不会重复 URL。所以这是一个冷聚变问题,而不是URL重写问题。

相关内容

  • 没有找到相关文章

最新更新