【问题标题】:Codeigniter URL remapping to remove segmentCodeigniter URL 重新映射以删除段
【发布时间】:2013-05-27 03:32:31
【问题描述】:

我有一个 codeigniter 网站,其中请求 url 采用以下形式:

example.com/segment1/segment2/segment3 where:

segment 1 is a folder name
segment 2 is a controller name
segment 3 is a function name

我想将这些请求重新映射到:

example.com/segment2/segment3

我已经在 my*routes.php* 配置中尝试过这个:

$route['(:any)/(:any)/(:any)'] = "$2/$3/$1";

浏览器地址栏中显示的请求没有改变:

example.com/segment1/segment2/segment3

我该如何解决这个问题?

【问题讨论】:

  • 所以你希望当用户在浏览器中输入“example.com/segment1/segment2/segment3”时它实际上会调用“example.com/index.php/segment2/segment3”???
  • 大卫,我想让它生成example.com/segment2/segment3 index.php已经被取出了
  • 只需将我的答案中的第二行添加到 .htacccess 文件中删除 index.php 的部分的上方
  • 我会从我的回答中删除“index.php”...

标签: php codeigniter


【解决方案1】:

您可以将其添加到您的 .htaccess 文件中(正如您提到的,您的文件夹是静态的):

RewriteRule ^(.*)?/(.*)?$   your-folder-here/$1/$2   [L,NC]                                                 

【讨论】:

  • 对不起,大卫,我希望在请求到达浏览器之前由 codeigniter 完成。我已经有一个正在进行其他修改的 htacess 文件,但是 AFAIK htacess 文件接受输入的请求并对其进行修改,但这会将初始请求留在浏览器窗口中,我想让它看起来更漂亮。谢谢 - 比尔
  • 嗨,Bill,codeigniter 不会使用路由更改您在浏览器中键入的内容(例如重定向),例如您正在尝试的内容。大多数时候,这个想法是给出一个规则,该规则采用输入 URL 的首选方式并将其路由到丑陋的真实位置。基本上,用户输入一个漂亮的 URL 并秘密地被带到真实(丑陋)的位置。那么这里哪个是漂亮的 URL,哪个是丑陋的 URL?
  • 大卫丑陋的网址:example.com/segment1/segment2/segment3 漂亮的网址:example.com/segment2/segment3。请记住,segment1 是一个常量(文件夹名称)
  • awww...好吧,那么您的问题是您需要颠倒您输入codeigniter路线的方式。正在更新答案...
  • 立即查看我的答案。它正在寻找用户输入“控制器/功能”,并将路由到“您的文件夹/控制器/功能”。
【解决方案2】:

这会起作用,但这会覆盖所有可能的 URL。

$route['(:any)/(:any)'] = 'controller_name/$1/$2';

为了让其他控制器工作,你必须在上面的语句之前定义

$route['other_controller_1/(:any)'] = 'other_controller_1/$1';
$route['other_controller_2/(:any)'] = 'other_controller_2/$1';

URI Routing : Codeigniter User Guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2018-08-12
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多