2

CFWheelsには、指定された引数に基づいて内部URLを取得するためのURLFor()関数があります。引数を指定せずに内部URLを取得する方法はありますか?

例:ユーザーが「http://somedomain.com」または「http://somedomain.com/about/」または「http://somedomain.com/contact/」に移動すると、ReWrittenURL(( )「/」、「/ about /」、「/ contact /」などを返しますか?

引数なしでURLFor()を使用すると、「/ home/index」または「/about/index」または「/contact/index」が返されます。

CGI.SCRIPT_NAMEは「/rewrite.cfm」を返します

明らかに、document.location.hrefを使用するJavascriptを使用すると、自分が求めているものを取得できます。

4

3 に答える 3

5

CGI.path_infoにはあなたが探している価値がありますか?

編集

最初、私はこの投稿を完全に混乱させて削除しました。これで少しテストを行いました。最新のwheelsコアファイル(1.1.6)をダウンロードし、IIS 7.5(URL書き換えモジュールがインストールされている)+ CF9 Webサーバーに抽出し、コアの「web.config」ファイルを編集しました。ルート、書き換えルールに「enabled='true'」を設定します。また、この例をサブフォルダーから実行していたため、パスを「/rewrite.cfm」から「rewrite.cfm」に変更しました。これにより、次のようなURLを正常にリクエストできるようになりました。

http:// server / Wheelstest / Wheels / Wheels

ここから、views / Wheelsの下のlayout.cfmを編集し、次を追加しました。

<cfdump var="#cgi#">

次に、上記のURL(/ Wheelstest / Wheels / Wheels)を要求すると、cgiスコープのダンプが表示されます。path_infoの下では、これは値/ Wheels/wheelsです。

次に、views/wheelsの下に空白の「index.cfm」ファイルを追加しました。

/ Wheelstest / Wheelsをリクエストすると、path_info:"/wheels"に対してこれを取得します。

/ Wheelstest / Wheels /をリクエストすると、path_info: "/Wheels/"に対してこれを取得します。

/ Wheelstest / Wheels / indexをリクエストすると、path_infoに対して次のようになります: "/ Wheels/index"。

/ Wheelstest / Wheels / index /をリクエストすると、path_infoに対して次のようになります: "/ Wheels /index/"。

つまり、基本的に-cgi.path_infoは、あなたが望むことを正確に実行してくれます。あなたのセットアップは私のものと何が違うのですか?それはあなたのためにその値を返さないということですか?

于 2011-12-06T21:27:50.943 に答える
3

これを行うためのより良い方法があるかもしれません...しかし、ここで私はとにかく行きます

すべてのページに#params#が送信されます

    <cfdump var="#params#">
    <cfoutput>#params.action#/#params.controller#/#params.key#</cfoutput>
    <cfabort>

それをコントローラーに入れてみて、結果を見てください

問題は、オブジェクト内のparamsオブジェクトが存在しない場合、エラーが発生することです。したがって、生成されるパスは、構造体キーが存在するかどうかを確認し、それに応じて編集する必要があります。

于 2011-12-07T02:48:29.697 に答える
1

CGI.Path_Infoは、望ましい結果を提供します。私はさまざまなオプションを試してきましたが、それらはすべて失敗し、リダイレクトループに入りました。CGI.path_infoを切り替えるとすぐに、すべてが正常に開始されました。

于 2021-04-16T02:09:37.383 に答える