1

CI の URI セグメントの 1 つの値として URL を入れようとしています。私のコントローラ メソッドは、そのような引数を受け入れるように定義されています。しかし、その URL にアクセスすると、404 エラーが発生します。例えば:

www.domain.com/foo/urlencoded-url/

何が問題なのですか?代わりに GET 経由でこれを行う必要がありますか?

アップデート:

// 404 を生成する URL http://localhost/myapp/profile_manager/confirm_profile_parent_delete/ugpp_533333338/http%3A%2F%2Flocalhost%2Fmyapp%2Fdashboard%2F

// これは私のprofile_managerコントローラーにあります public function confirm_profile_parent_delete($encrypted_user_group_profile_parent_id = '', $url_current = '')

2 番目の URI セグメントを削除すると、404 は表示されません。http://localhost/myapp/profile_manager/confirm_profile_parent_delete/ugpp_533333338/

4

6 に答える 6

4

%2F は apache の問題を引き起こしているようです。

可能な解決策:

  1. preg_replace / を - (または何か他のもの) に置き換えてから URL を送信し、反対側で元に戻します。
  2. Apache を AllowEncodedSlashes On に設定します
  3. ちょっとしたハックですが、URL を介して送信する代わりに、URL をセッション変数などに保存することもできます *肩をすくめる *
  4. 送信前にダブルURLエンコード
于 2012-05-16T05:11:15.167 に答える
0

URL でエンコードされた文字を受け入れるように、config/route.php のルールを変更する必要がある場合があります。また、以下の記事からいくつかのソリューションを見ることができます。

于 2012-05-16T06:05:20.717 に答える
0

試す

function __autoload($class){
 if(!empty($_SERVER['REQUEST_URI'])){
  $_SERVER['REQUEST_URI'] = $_SERVER['REDIRECT_QUERY_STRING'] = $_SERVER['QUERY_STRING'] = $_SERVER['REDIRECT_URL'] = $_SERVER['argv'][0]  = urldecode($_SERVER['REQUEST_URI']); 
}
}

config.php では、このメソッドは私のために機能します

于 2014-02-06T17:35:06.137 に答える
0

私は実際に urlencode(urlencode(urlencode(

および urldecode(urldecode(urldecode(

3回!!そしてそれは最終的に機能し、2回はカットしませんでした。

于 2012-12-30T01:46:30.627 に答える