这是url的一个示例:http: //www.example.com/search/search-keyword
我试图使这项工作,我使用.htaccess删除index.php,搜索是控制器,我想在索引方法中传递一个参数.
这是目前的样子:
class Search extends CI_Controller{
function index($param){
echo $param;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?我似乎无法使其发挥作用
小智 23
class Search extends CI_Controller{
function _remap($param) {
$this->index($param);
}
function index($param){
echo $param;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够访问:/ search/123123:并且页面将回显"123123"或您放置的任何内容.
小智 13
function _remap($parameter){
$this->_index($parameter);
}
Run Code Online (Sandbox Code Playgroud)
试一试,告诉我们它是怎么回事.
大多数这些解决方案只有index()在控制器中只调用一个函数时才有效.如果你的路线有这个:
$route['search/(:any)'] = 'search/index/$1';
Run Code Online (Sandbox Code Playgroud)
在您的路线中使用上述内容,会发生什么是您的搜索功能将起作用,但如果您将任何其他功能添加到同一个控制器,它们都将被重定向到/search/index/$1.
我能想到的唯一解决方案是允许您使用所需的URL,同时仍然可以向搜索控制器添加任何其他功能,这是为路由文件添加一种混乱的条件.这是它的样子和它的作用:
$request = $_SERVER['REQUEST_URI']; // Only add this for readability
if(!strpos($request, 'search/another_function') || !strpos($request, 'search/more_functions')) {
$route['search/(:any)'] = 'search/index/$1';
}
这样做基本上是说"如果请求的URL不包含我的任何搜索控制器函数的名称,那么它必须用于索引,因此我们将激活索引的路由规则".
这将允许您在search/any_other_functions_you_have没有问题的情况下接受请求,并且仅在请求URI与其中任何一个不匹配时激活隐藏索引函数的规则.
这样做的一个副作用是你永远不会得到404.例如,如果有人输入了像"yourdomain.com/search/something"这样的网址,并且他们希望它显示非搜索结果页面,那么他们将无法获得404警告他们没有这样的页面,而应用程序将假设他们键入的是搜索词.然而,听起来这对你来说并不是什么大问题,我也不认为让一个控制器无法回复404这是一件非常糟糕的事情.