2011-05-13 67 views
3

我從來沒有重寫過一個URL,除去我的CodeIgniter安裝的index.php部分,並且我通過在我的.htaccess文件中使用複製粘貼的代碼片段來完成。我沒有時間去真正瞭解片段的功能。我基本上是重寫URL的新手。重寫CI URL

我有我的web應用程序的移動版本。我儘可能將移動用戶重定向到一個子域:m.myhost.tld。但是,因爲我使用(一個)CodeIgniter(安裝),所以我必須將這些移動用戶發送到移動專用控制器,在我的情況下是/mobile/。所以,控制器總是顯示在我的地址欄中。

我只是不認爲這是很乾淨,我正在尋找一種方法來重寫URL;但事實告訴我,我甚至不知道這是否可能..因此我的問題。 我想擺脫/mobile控制器部分。這可能嗎?

一些例子:

我現在的移動 '根' 文件夾是

http://m.myhost.tld/mobile

我想談談這個一進

http://m.myhost.tld/

此刻,當我去http://m.myhost.tld/,它重定向到我的CodeIgniter應用程序的默認控制器,這是該Web應用程序的「桌面」版本的一部分。

又如:

談到

http://m.myhost.tld/mobile#mobile/about

http://m.myhost.tld/#mobile/about

我不知道如果我在這裏做任何意義。我在我的腦海中,但就像我說的,我不知道究竟是什麼。如果用戶位於m子域,我想隱藏我的網址的/mobile部分。但是,只有當我們使用m子域名時,所以'桌面'版本(位於www)根本不會被觸及。

就像我現在說過幾次,我不確定什麼是可能的,我在找什麼可能只是太複雜或什麼。我想我會問,雖然問問是我最擅長的。請不要太難我,如果這原來是一個愚蠢的問題,先生的專業人士;)

編輯: 我以爲我會編輯,因爲我不想錯了。我不一定在尋找我的問題的確切答案。我也歡迎可能指導我解決問題的文檔/教程/文章。如果我能設法提出自己的解決方案,我當然會學到更多。

非常感謝。

回答

2

這可能是過於簡單的解決方案,但爲什麼不是你路由的配置做一些簡單的像

在你的配置

這樣做

if ($_SERVER['SERVER_NAME'] == 'm.myhost.tld') 
    $route['default_controller'] = "mobile"; 

這將使默認控制器美孚這樣你就不必有/移動...

正如我說也許太簡單

+0

呵呵,我老實說厭倦了自己,總是看起來太硬了,我總是試圖讓它比實際上更難。 非常感謝! – cabaret 2011-05-14 11:20:13

0

編輯:不行的,但也許有人可以把它變成的東西做

試試這個:在

RewriteCond $1!^mobile/ 
RewriteCond %{HTTP_HOST} ^m\.myhost\.tld 
RewriteRule (.*) /mobile/$1 [L] 
+0

感謝,似乎沒有工作,雖然。我想你的答案有一個小小的錯字? '%{HTTP_HOST}'。但是它仍然不起作用;我收到了一個巨大的403錯誤:您無權訪問/index.php//mobile/index.php/mobile/index.php/mobile/index/...(等等)服務器。 – cabaret 2011-05-13 19:00:39

+0

啊呀,這是有道理的 - 它只是一個無限的重定向。這將教會我在早上回答關於SO的問題:D我將繼續並刪除它,如果我拿出其他東西,我會發布它。 – 2011-05-13 19:28:52

+0

我編輯了我的原始答案,添加了一個應該確保它不會無限重定向的條件。給它一個鏡頭,讓我知道它是否工作。 – 2011-05-13 19:38:08