2011-05-27 37 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