为什么我的路由不在CodeIgniter中工作?

时间:2012-04-04 14:06:05

标签: php codeigniter

我已经阅读了关于此主题的一堆关于stackoverflow的文章,例如:

CodeIgniter: SEO friendly URLs

Codeigniter routes not working sometimes

我发誓我已经正确设置了所有内容,但在我将路由放入并保存我的应用程序并尝试转到新网址,甚至是旧网址后,他们都给了我404错误。

我的扩展程序目前看起来像这样:

搜索/ map_view /县

我希望看起来像这样:

地图/县

我在routes.php文件中写了以下重新路由,它给出了404错误:

$route['search/map_view/(:any)'] = 'map/$1';

为了防止我倒退,我也尝试过这样做:

$route['map/(:any)'] = 'search/map_view/$1';

那没有做任何事,所以我推断我做错了。需要注意的是,我确实有apache的mod_rewrite更改了我的url以从中删除index.php。不知道这有多大帮助,但我在其他帖子中已经注意到了很多。

我是否应该为此改变别的地方?我假设如果我输入以前的地址,我应该自动重新路由到新地址?或者如果我输入新地址,它应该自动工作?我不知道,这真的很烦人......

无论如何,我对这些内容有很多疑问,但我会从这里开始,然后看看我能解决这个问题之后能否找到其他答案。

编辑 - 我被要求提供更多信息。在这里。

这是.htaccess内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

目前我没有在routes.php文件中定义任何自定义路由,只是因为我无法使其正常工作。

当前控制器是“搜索”,方法“map_view”被传递给变量“county”。所以网址是

http://www.base_url.com/search/map_view/county

我想将此更改为

http://www.base_url.com/map/county

我之前写的其他所有内容仍然适用。再次感谢!

1 个答案:

答案 0 :(得分:2)

您希望自己的网址看起来像地图/国家/地区

routes.php

$route['map/(:any)'] = 'search/map_view/$1';
$route['map'] = 'search/map_view';

并确保您的控制器名称为Search.php。类名称为Search,其扩展名为CI_Controller,方法名称为map_view() (必须为公共函数)< / em>的

查看CI Controller Guide了解详细信息