私の codeigniter プロジェクトでは、URL から index.php を削除するための次の htaccess ファイルがあります。
RewriteEngine on
RewriteCond $1 !^(index\.php|js|media|style|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
検索フォームを使用しています (フォーム ヘルパーを使用)。これは 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はそれとは何の関係もないと思います。
いくつかの調査の後、誰かがこのように htaccess を変更することでその問題を解決することを提案したことがわかりました
RewriteRule ^(.*)$ /index.php/$1 [B,L]
私はこの方法を試しましたが、すべてが壊れています。
% 記号はエンコードされていないため、このように pre_search コントローラーでも使用しようとしました
redirect('search/' . urlencode($this->input->post('term')));
しかし、問題は解決しませんでした。
それで、これを解決する最善の方法は何ですか?私はこれがApacheの問題であることを知っています。私の意図を明確にするために、コードイグナイターコードを示しているだけです。
前もって感謝します
ディーパック