私はCakePHPについてかなり新しくなっています。そのため、私がCakeで叩いたZend Frameworkの基本的なことがいくつかあります。CakePHPのコントローラ/アクションにurlencodeされたURLを渡す
私は、名前付きパラメータをコントローラ/アクションに渡す必要があるプロジェクトに取り組んでいます。ルートを設定してパラメータを渡すのは簡単ですが、パラメータがurlencodedのURLであるときに問題が発生します。
例:コントローラとアクションの設定に関係なく、http://www.cakephp.com/controller/action/http%3A%2F%2Fwww.google.comは404を投げますが、/controller/action/http://www.google.comを何らかの方法で処理すると唯一の問題は、 httpを名前付きパラメータとして使用します。別の方法として、/controller/action?url=http://www.google.comすればうまくいきます。
私がこれに使用した回避策は、値をbase64でエンコードされた文字列として渡すことですが、いくつかの制限があります。たとえば、APIであれば、APIを使用しているシステムがbase64に文字列をエンコードできることを保証することはできません。
とにかく、名前付きパラメータにURLエンコードされた文字列を渡すのが最適なソリューションです。質問は、なぜCakePHPがパラメタとしてurlencodeされた文字列を受け入れないのか、なぜそれが404を投げるのですか?
ありがとうございました。
[URLでBase64でエンコードされた文字列を渡す](http://stackoverflow.com/questions/1374753/passing-base64-encoded-strings-in-url)の回答を見てみる価値があります。 – drmonkeyninja