2011-10-08 141 views
4

我爲一個web應用程序使用CodeIgniter,現在我有一個迫切的問題:我剛剛發現在基於Linux的服務器上區分大小寫,並且我剛將一個站點從Windows移到Linux。這意味着與該網站的鏈接現在不再適用,現在所有的小寫網址都不再適用。在CodeIgniter網站中重寫爲不區分大小寫的url?

谷歌搜索,我發現,你應該能夠做這樣的事在.htaccess文件:

RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

但我試過,這是一點都不好......!突然間,我看到一個很大的醜陋的錯誤頁面,盯着我看,說Tomcat服務器或類似的東西肯定有問題。不用說,我立即刪除了這些行!

但是爲什麼它不起作用呢,我該怎麼做呢?

任何幫助將不勝感激。

回答

-1

其實發現,這是很容易的,驚訝的是,沒有人回答了這個(也許是不正確的做法,但我會這樣想...):

我剛添加在部分航線routes.php文件在配置文件夾中:

$ route ['About/Contact'] =「about/contact」;

等等......

+1

這不是一個很好的解決方案,因爲您正在爲相同路由密鑰的每個套管創建多個路由。這就是爲什麼這個建議是用modrewrite處理它 - 這樣無論請求中使用哪個外殼,你的路由都可以表達一次。 –

7

代碼點火器支持正則表達式 - 如果你想在你的路由的定義明確的,以這種方式定義它們是不區分大小寫:

$route['(?i)(about\/contact)'] = 'about/contact'; 
+0

在這裏,顯示url是用戶輸入的名稱。我想要的東西是路由應該不區分大小寫,並顯示url應區分大小寫。我可以做這件事嗎? –

+0

在我的代碼片段中,賦值的左側處理請求的不區分大小寫。分配的右側指定請求將路由到的URL。所以在任何情況下,關於/聯繫的請求都將以小寫路由到/聯繫。我相信你應該嘗試在你想要的框中指定路由URL。它應該工作。 –