0

のような URL が欲しい

http://www.example.com/ (*.)

しかし、CodeIgniter ではそれができません。一部の URL にアクセスしようとすると、404 エラーが発生します (要求されたページが存在します)。

URLに許可された文字を設定できることは知っていますが、エンコードすることを考えました。ただし、次のようなことをすると:

http://www.example.com/<?php echo rawurlencode(string) ?>

あるいは:

http://www.example.com/<?php echo rawurlencode(rawurlencode(string)) ?>

まだ 404 を取得しています。なぜですか? '%' は使用できる文字ですが、なぜ機能しないのでしょうか? そして、それを修正するにはどうすればよいですか?

4

3 に答える 3

1

config/config.phppermitted_uri_charsキーを介して特定の標識を許可できます。

ただし、完全には確信が持てませんが、セキュリティを強化するために、これらはデフォルトで制限されていると思います。関連する説明が示唆するように:

/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify with a regular expression which characters are permitted
| within your URLs.  When someone tries to submit a URL with disallowed
| characters they will get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/

たとえば、現在の設定の優れている点は、ID を解析するのに十分な数の URI を許可していないこと''です""。もちろん、自動と手動$this->db->escape()がありますが、これはフェイルセーフを追加するだけです。

于 2013-02-18T09:23:29.617 に答える
0

urlencoded文字列をに渡そうとするとURI、エンコードされた文字列に が含まれているとエラーが発生します/。codeigniter はこれをセグメントとして解析しようとするため、 をレンダリングし404ます。使用する必要があるのはクエリ文字列です。

$string = rawurlencode(string)

http://www.example.com/class/method/?string=$string

次に、あなたの方法で

使用するget

function method()
{
   $this->input->get('string');

}
于 2013-02-18T07:59:42.210 に答える
0

URL にスラッシュを入れたい場合は/、double raw エンコーディングを使用してください。例えば:

$string = rawurlencode(rawurlencode('/sth/sth'));
于 2013-02-23T17:39:07.900 に答える