【问题标题】:Why aren't my routes working in CodeIgniter?为什么我的路由在 CodeIgniter 中不起作用?
【发布时间】:2012-04-04 14:06:04
【问题描述】:

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

CodeIgniter: SEO friendly URLs

Codeigniter routes not working sometimes

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

我有一个目前看起来像这样的扩展:

搜索/map_view/county

我想看起来像这样:

地图/县

我在 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 文件中定义任何自定义路由,只是因为我无法让它正常工作。

当前控制器是“Search”,方法“map_view”被传递一个变量“county”。所以网址是

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

我想把这个改成

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

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

【问题讨论】:

  • 您的路线需要与实际路线匹配。

标签: php codeigniter


【解决方案1】:

您希望您的网址看起来像 ma​​p/country

在你的routes.php

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

并确保您的控制器名称是 Search.php。类名称是 Search,扩展 CI_Controller 和方法名称 map_view() (必须是公共函数)

查看CI Controller Guide了解详细信息

【讨论】:

  • 感谢您的回复 - 我试过了 - 但我仍然收到 404 错误。当前控制器称为“搜索”,它肯定扩展了 CI_Controller。它现在很好用,但我正在尝试缩短我的 URL 以用于 SEO。它当前访问的方法称为“map_view”。如果我创建这条路线并且我希望它改变“search/map_view/county”为“map/county”,我是否需要一个名为“Map”的新控制器?也许我只是不太清楚这个路由是如何工作的——在我看来,这只是一种让 URL 不那么难看的方法并且更易于访问...
  • 编辑您的主帖并包含您的.htaccessroute.phpSearch controller
  • 我添加了请求的信息。我已经阅读了 1000 遍 user_guide,搜索了谷歌,并寻找了尽可能多的例子来说明它是如何工作的。我试着做我的功课,但我发誓我所做的一切都应该工作,我一直得到 404。我没有尝试使用预期路线的名称创建一个新控制器,但对我来说,似乎它会破坏路线的目的......
  • 我也有同样的问题。它在一个项目中工作,而不是在另一个项目中。你找到解决方案了吗@Jonathan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
相关资源
最近更新 更多