2013-05-27 84 views
0

我有一个笨网站,请求的URL的形式是:笨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 

我已经试过这是我的* routes.php文件*配置:

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

,在我的浏览器的地址栏中显示了reqyest是不变的:

example.com/segment1/segment2/segment3

我该如何解决这个问题?

+0

所以,你想之前定义当用户输入“example.com/segment1/segment2/ segment3“进入浏览器,它实际上会调用”example.com/index.php/segment2/segment3“??? – prograhammer

+0

David,我希望它生成example.com/segment2/segment3 index.php已被取出 – user61629

+0

只需将我的答案中的第二行添加到正在删除索引的.htacccess文件中的部分之上.php – prograhammer

回答

1

您可以添加到您的.htaccess文件(如你提到你的文件夹是静态的):

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

对不起David,我希望在请求命中浏览器之前通过codeigniter完成此操作。我已经有一个htacess文件正在进行其他修改,但AFAIK htacess文件接受输入的请求并对其进行修改,但是这会在浏览器窗口中留下初始请求,我想让它看起来更漂亮。谢谢 - 比尔 – user61629

+1

嗨比尔,well codeigniter不会改变你在浏览器中输入的内容(比如重定向)使用路由,就像你正在尝试的那样。大多数情况下,这个想法是给出一个规则,该规则采用输入URL的首选方式并将其路由到难看的真实位置。基本上,用户输入一个漂亮的URL并秘密地被带到真实(丑陋)的位置。那么这个漂亮的网址是哪一个,哪个网址是丑陋的网址? – prograhammer

+0

David丑陋的URL:example.com/segment1/segment2/segment3漂亮的URL:example.com/segment2/segment3。请记住segment1是一个常量(文件夹名称) – user61629

0

这是可行的,但这将覆盖每一个可能的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