2013-04-03 44 views
0

我得到如何從CI網址中整體刪除index.php。以下工作正常:從網址中刪除index.php ONLY CI子目錄

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /crm/v2/index.php?/$1 [L] 

但是,它會干擾活網站上的其他代碼。我添加的這個新的CI版本位於名爲v2的子目錄中。這樣的佈局是一樣的東西:

-originalDir 
    --v2 
-otherDirs 
-.htaccess 
-etc... 

因此,在本質網址出來是這樣的:

// Original page 
https://www.site.com/originalDir/somepage.htm 
// And this exist too 
https://www.site.com/originalDir/index.php 

// My new stuff 
https://www.site.com/originalDir/v2/index.php/controller/etc... 
// Desired effect withOUT affecting the original sites index.php page 
//  aka, the below is what i WANT but NOT getting! 
https://www.site.com/originalDir/v2/controller/etc... 

我可以在很多的語言代碼,但從來沒有很多與這些htaccess的重寫經驗。任何想法如何使它重寫index.php僅用於codeigniter子目錄?我嘗試了一些似乎可以在本地使用的東西,但不是在現場服務器上。不確定重寫代碼的確切結構。

+0

你的htaccess實際上看起來不錯,你是否從config.php文件中刪除了index.php? –

+0

這是正確的,正如我之前所說的,但是在同一個網站上有舊的代碼停止工作。因此我需要一個備用解決方案。 – SpYk3HH

+0

是的,但我的意思是,它看起來並不像它應該影響高於這個水平的任何東西。我用htaccess不太好,雖然如此... –

回答

1

假設你希望只改寫在CI目錄中的規則,而不是指向該目錄到它之外的任何網址...

更改RewriteRule只匹配的URI,以你的CI目錄開始。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^crm/v2/(.*)$ /crm/v2/index.php?/$1 [L] 

或者,你可以把一個.htaccess文件在你的/crm/v2目錄,並指定一個RewriteBase

RewriteEngine on 
RewriteBase /crm/v2/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
+0

您的備用解決方案正是我所需要的。到目前爲止,它似乎在0干擾下工作得很好!如果我發現任何問題,我會回覆。在此之前,謝謝! – SpYk3HH

1

您是否嘗試過使用RewriteBase?

RewriteEngine On 
RewriteBase /crm/v2 
RewriteRule ^(.+)$ index.php?/$1 [L] 

我還沒有專門測試過您的信息,但這是來自我用於我的一些項目的模板。

這裏是RewriteBase的文檔:我希望這有助於http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase

+0

給你一個文檔負責人的+1,儘管最終,@Cryode提供的替代答案已經很完美了!感謝所有的幫助! – SpYk3HH