2012-04-29 13 views
0

400不正な要求を修正するのに役立つ、私はURLは私のCodeIgniterのプロジェクトでCodeIgniterのプロジェクト

RewriteEngine on 
RewriteCond $1 !^(index\.php|js|media|style|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

からのindex.phpを削除するには、次ののhtaccessファイルを持って、私は(フォームヘルパーを使用して)検索フォームを使用していなければなりません。それはPOSTに基づいているので、コントローラの検索にリダイレクトするために "pre_search"というコントローラを作成して、POSTされたデータがURLに表示され、URIヘルパーのセグメントメソッドで使用できるようにしました。

だから私のpre_searchコントローラ

<?php 

class Presearch extends CI_Controller { 

    //just to make form POST data visible in URL string for search 
    public function index() { 
     redirect('search/' . $this->input->post('term')); 
    } 
} 

そして、検索コントローラは、実際の検索を行います。その間、私はテストのためにURLのすべての文字を許可しました。

$config['permitted_uri_chars'] = ''; 

私の問題は、私はURLにパーセント記号(%)を持っている場合、それは不正な要求を示しになりました。私はそれがApacheの応答であり、codeigniterはそれと関係がないと思う。

は、いくつかの研究の後、私は誰かが、私はこの方法を試してみましたが、それはすべてを壊すこの

RewriteRule ^(.*)$ /index.php/$1 [B,L] 

のようにhtaccessファイルを変更することで、その問題を解決することが示唆ことがわかりました。

%記号がエンコードされていなかったので、私はこの

redirect('search/' . urlencode($this->input->post('term'))); 

ように私のpre_searchコントローラでも使用しようとしましたが、問題を解決していませんでした。

これを解決するにはどうすればよいですか?私はこれがApacheの問題だと知っています。私は自分の意図を明確にするためにコードネームコードを説明しています。事前に

おかげ

ディーパック

答えて

0

私は、これらは私のparams同じでありますし、私もそれがhtaccessファイルhttp://www.dracos.co.uk/code/apache-rewrite-problem/

$this->load->library('form_validation'); 
$this->form_validation->set_rules('s', '','trim|min_length[3]|required|xss_clean'); 
if ($this->form_validation->run() == FALSE): 
    $this->session->set_flashdata('errorMsg', form_error('s')); 
    redirect($this->session->userdata['redirectUrl']); 
else: 
    redirect(base_url() . $this->lang->line('link_search') . '/' . $this->functions->convertToUrl($this->functions->secureString($this->input->post('s', TRUE)))); 
endif; 

私の設定値であなたを助けるかもしれない、このリンクを見つけた

$config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-ñ'; 
$config['uri_protocol'] = 'PATH_INFO'; 

POSTをlegiに変換します。 URLを変更し、許可されている文字に文字を変更してから、リダイレクトを行います。

関連する問題