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> 

「ProductID」を使用して MS Access データベースから「タイトル」を取得するように web.config のコードを変更するにはどうすればよいですか? コールドフュージョンの場合、クエリは次のようになります

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

2 に答える 2

1

urlMappingsを使用したいと思います。

/products/Ipad_3これを使用して、リクエストをにマップできます/itemdetail.cfm?ProductID=4399(これは、投稿したコードを使用して書き換えられたリクエストから発生する場合もあります)。

これはurlMappingsへのまともなガイドです:ASP.NET2.0のURLマッピングを見てください

(注:web.configを使用してデータベースに直接クエリを実行することはできません)

于 2012-12-04T06:14:12.967 に答える
1

はい、私が言ったように、あなたは正しい考えを持っています.ColdFusionがweb.configでrewriteMapを定期的に生成する必要があります(または、製品のタイトルが変更されるか、新しい製品が追加/削除されるたびに再生成するように結び付けます)

generateRewriteMap.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#">

もう 1 つの方法は、/products/This_Products_Title が /products/ 以降のすべてを解析した後で、/products.index.cfm を変換してタイトルを検索し、製品のタイトルをデータベース検索して適切なページを表示することです。何も見つからない場合は、ユーザーをホームページに戻します。これには、アプリケーション内のすべてのリンクを FriendlyURLTitle を使用するように変更する必要があります。

于 2012-12-05T01:40:01.190 に答える