php - Codeigniter 中的路由 - 自动

标签 php codeigniter routes rewrite

我对 Codeigniter 路由有疑问。我希望我网站上的所有注册用户都有自己的“目录”,例如:www.example.com/username1www.example.com/username2。这个“目录”应该映射到 Controller “polica”、方法“ogled”、参数“username1”。

如果我这样做,那么每个 Controller 都会映射到这条路线:“polica/ogled/parameter”。这不好:

$route["(:any)"] = "polica/ogled/$1";

这行得通,但我总是在 routes.php 中手动输入信息:

$route["username1"] = "polica/ogled/username1";

我该怎么做才能实现自动化?

更新: 例如,我有名称为 ads 的 Controller 。例如,如果您转到 www.example.com/ads/ 会有上市广告。如果您要访问 www.example.com/username1,则会列出用户 username1 的广告。还有 Controller user, profile, latest,...

我当前的routes.php:

$route['oglasi'] = 'oglasi';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';

我用这段代码解决了问题:

$route['oglasi/(:any)'] = 'oglasi/$1';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';

问候,马里奥

最佳答案

你的路线的问题在于,通过使用 :any 你匹配,实际上......任何路线,所以你几乎被困在那里。 我认为您可能有两种解决方案:

1)您可以有选择地单独重新路由所有站点 Controller ,例如:

$route['aboutus'] = "aboutus";
$route['where-we-are'] = "whereweare";
//And do this for all your site's controllers
//Finally:
$route['(:any)'] = "polica/ogled/$1";

所有这些路由都必须在 ANY 之前出现,因为它们是按照它们出现的顺序读取的,如果您将 :any 放在开头,它会很乐意跳过所有其他路由。

评论后编辑:

我的意思是,如果你要匹配任何段,这意味着你根本不能使用任何 Controller (默认情况下,第一个 URI 段),因为路由器总是会重新路由你使用你定义的法律。 为了允许 CI 执行其他 Controller (无论它们是什么,我只是使用了一些常见的网页,但实际上可以是所有内容),您需要通过将它们排除在重新路由之外来允许它们。你可以通过将它们放在你的 ANY 规则之前来实现这一点,这样每次 CI 通过你的路由规则时,它首先解析你“转义”的那个,并且只有当它们不匹配它在 URL 上找到的任何东西时,它才会继续到 :ANY 规则。

我知道这仍然是一个冗长的代码,但它们肯定会像您所说的那样小于 6K。 由于我不知道您的 URL 和 Web 应用程序的实际结构,因此这是我想到的唯一解决方案。如果您提供更多信息,例如您的应用程序的常规 URL 是如何形成的,那么我可以更新我的答案

/结束编辑

这不是一个实用的解决方案,因为它需要大量代码,但如果您想要这样的设计,这是我想到的唯一方法。 此外,考虑您可以使用正则表达式作为 $route 索引,但我认为它在这里不起作用,因为您的用户名不太可能以这种方式匹配,但我只是想指出这种可能性。

2) 你可以稍微改变你的设计模式,并为用户名分配另一条路线,类似于

$route['user/(:any)'] = "polica/ogled/$1";

尽管如此,这仍会生成非常漂亮(和语义)的 URL,并且会避免转义其他路由的所有麻烦。

关于php - Codeigniter 中的路由 - 自动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618633/

相关文章:

javascript - (php)如何放置按钮来获取新的输入字段(内有图片)

php - AES 256 带 PKCS7/PKCS5 填充 GST 电子发票

php - Codeigniter php - 基于使用 JQuery 的下拉选择返回(ajax?)数据

routes - 使用完整引擎未定义 Rails url 链接辅助方法

php - 从 php 网站检索数据到 Android 应用程序

php - 无法在 IIS 上上传文件

php - 为什么点击标签<a>后,页面刷新并且appendTo不起作用?

javascript - 如何使用javascript根据动态表每行中的输入值添加天数

javascript - 如何从服务器返回 html 模态目标 View ?

c# - WPF:点击用户控件背景不触发