2011-05-27 61 views
1

我一直在困惑这一无所有。这是我在那一刻得到了重写规则:Codeigniter和RewriteRule问题

Options +FollowSymlinks 
DirectoryIndex index.php 

RewriteEngine on 
RewriteRule ^ext\/(.*)$ index.php/cproposal/key/$1 [NC] 

基本上我试图让

http://localhost/cvc/ext/12445345346 

改写到

http://localhost/cvc/index.php/cproposal/key/12445345346 

笨是生产404然而。如果我将规则的index.php/cproposal/key/$1部分更改为类似目录中发现的Codeigniter license.txt之类的东西,那么它可以工作,但实际上与Codeigniter本身相关的任何内容都会生成404。

+0

哦,我应该提到,如果我将RewriteRule的第二部分更改为完整的url,那么它的工作原理。 – Dormouse 2011-05-27 07:42:30

回答

2

mod_rewrite很好,但Codeigniter已经有一个built in solution Codeigniter应用程序的任何东西。

尝试添加以下内容到config/routes.php

$route['ext/(:num)'] = 'cproposal/key/$1'; 

这将为路由请求:

http://localhost/cvc/ext/{any_number}

http://localhost/cvc/cproposal/key/{requested_number}

index.php将是可选的,并且依赖于你的CI配置。换句话说,如果你已经使用它 - 它会在网址中。如果不是,它不一定是。

除了内置的通配符(:num)(:any)之外,所有的CI路线都可以使用正则表达式,所以您可以随时获得创意。

+0

谢谢,但现在奇怪的是,它不加载会话,除非我使用/ cvc/ext/key/12423542? – Dormouse 2011-05-27 07:56:20

+0

“不加载会话”是什么意思?此外,感谢您确认这是在您的CI应用程序中,我的答案对于任何其他应用程序都是无用的,但如果它在CI内,它是最好的(也是最便携的)解决方案。另外,究竟是什么版本的CI? – 2011-05-27 07:57:07

+0

通过不加载会话我的意思是它无法从该页面上的会话加载任何数据。我使用的CI版本是2.0.2。谢谢您的帮助。 – Dormouse 2011-05-27 08:10:13