1

我想在 web.config 中对我的产品页面进行自动重写。所以像这样的“itemdetail.cfm?ProductID=4399”变成了“products/Ipad_3”。我得到了这个工作

<?xml version="1.0"?>
  <configuration> 
    <system.webServer>     
      <rewrite> 
        <rules> 
          <rule name="Rewrite for Products" stopProcessing="true"> 
            <match url="products/(.+)" /> 
            <action type="Rewrite" url="itemdetail.cfm?ProductID={Products:{R:1}}" /> 
          </rule> 
        </rules> 
        <rewriteMaps> 
          <rewriteMap name="Products"> 
            <add key="Ipad_3" value="4399" /> 
          </rewriteMap> 
        </rewriteMaps> 
      </rewrite>
    </system.webServer> 
  </configuration> 

如何修改 web.config 中的代码以使其使用“ProductID”从 MS Access 数据库中获取“标题”?如果是coldfusion,查询将是这样的

<cfquery name="GetData" datasource="myaccessdns">
  SELECT Title 
  FROM   Products  
  WHERE  ProductID = #ProductID#
</cfquery>
4

2 回答 2

1

我认为您想使用urlMappings

/products/Ipad_3您可以使用它来映射对to的请求/itemdetail.cfm?ProductID=4399(甚至可能源自使用您发布的代码重写的请求)。

这是一个不错的 urlMappings 指南:A Look at ASP.NET 2.0's URL Mapping

(注意:不能使用 web.config 直接查询数据库)

于 2012-12-04T06:14:12.967 回答
1

是的,正如我所提到的,您的想法是正确的,您只需要 ColdFusion 定期在 web.config 中生成 rewriteMap(或者在每次更改产品标题或添加/删除新产品时将其绑定以重新生成)

生成重写映射.cfm

<cfquery name="AllProducts" datasource="#request.dsn#">
     select ProductID, URLTitle
     from Products
</cfquery>

<cfsavecontent variable="WebConfigFileData"><?xml version="1.0"?>
  <configuration> 
    <system.webServer>     
      <rewrite> 
        <rules> 
          <rule name="Rewrite for Products" stopProcessing="true"> 
            <match url="products/(.+)" /> 
            <action type="Rewrite" url="itemdetail.cfm?ProductID={Products:{R:1}}" /> 
          </rule> 
        </rules> 
        <rewriteMaps> 
          <rewriteMap name="Products">
            <cfoutput query="allProducts"><add key="#URLTitle#" value="#ProductID#" />
            </cfoutput>
          </rewriteMap> 
        </rewriteMaps> 
      </rewrite>
    </system.webServer> 
  </configuration></cfsavecontent>

<!--- Backup the Original Web.Config --->
<cffile
  action = "copy"
  source = "c:/inetpub/wwwroot/mysite/web.config"
  destination = "c:/inetpub/wwwroot/mysite/web.config.#getTickCount()#">

<cffile
  action = "write"
  file = "c:/inetpub/wwwroot/mysite/web.config"
  output = "#WebConfigFileData#">

我这样做的另一种方法是在 /products/This_Products_Title 解析出 /products/ 之后的所有内容之后转换 /products.index.cfm 以搜索标题,然后在数据库中搜索产品的标题并拉出相应的页面。没有找到任何东西,将用户返回到主页。这确实需要您更改应用程序中的所有链接以使用 FriendlyURLTitle。

于 2012-12-05T01:40:01.190 回答