我想在CodeIgniter上创建自定义永久链接,实际上我买了脚本但开发人员因为一些冷漠而离开了该项目。所以现在问题是我不知道如何更改该脚本的永久链接。主要永久链接问题是当我在搜索栏上搜索任何内容时,我会收到此网址:
domain.com/?s=xxxxx%20yyyyy
而不是我想要这个url结构:
domain.com/search/xxxxxx-yyyyy /
应用/配置/ routes.php文件
$route['default_controller'] = "music";
$route['404_override'] = '';
$route['search/(:any)'] = "music/index/$0/$1/$2";
$route['search/music/(:any)'] = "music/$1";
答案 0 :(得分:0)
我想你要求的是不可能(直接) 假设你的表格是,
<form action="" method="GET">
<input type="text" name="s" value="" placeholder="Search music..." />
</form>
由于该方法为GET
,因此默认功能是将URL中的参数添加为查询字符串。
根据规范(RFC1866,第46页; HTML 4.x第17.13.3节)声明:
如果方法是“get”并且操作是HTTP URI,则用户代理获取action的值,附加“?”然后,使用“application / x-www-form-urlencoded”内容类型附加表单数据集。
所以,基本上你可以在这里做的是对此应用 hack 。应用搜索时,将用户重定向到所需的网址。你可以这样做,
控制器 (controllers / music.php)
<?php
class Music extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('xyz_model');
}
public function index()
{
if($this->input->get('s'))
{
$s = $this->input->get('s');
redirect('/search/'$s);
}
$this->load->view('home.php');
}
public function search()
{
$s = $this->uri->segment(2);
/*
Now you got your search parameter.
Search in your models and display the results.
*/
$data['search_results'] = $this->xyz_model->get_search($s);
$this->load->view('search_results.php', $data);
}
}