在我的 codeigniter 项目中,我有以下 htaccess 文件从 URL 中删除 index.php
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问题。我只是在说明我的 codeigniter 代码以澄清我的意图。
提前致谢
迪帕克