2013-03-27 45 views
0

平臺:Windows 7的專業版64位htaccess的重寫規則不處理的情況下

我有Apache 2.2的安裝我的開發機(基本上是WAMP設置)上。我在主要的htdoc中安裝了幾個基於Code Igniter的網站。但是,我陷入了處理主htdocs目錄下子目錄的情況。

這裏就是我有的.htaccess(位於/ CILearn目錄下的htdocs)問題:

RewriteEngine on 
    RewriteBase /CILearn/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /CILearn/index.php/$1 [NC,L] 

子目錄正在htdocs目錄CILearn。所以URL看起來像這樣:

localhost/CILearn 
    localhost/CILearn/site 
    localhost/cilearn 

現在這個工作和「現場」是一個控制器,所以index.php文件重定向工作。

這不起作用:

localhost/cilearn/site 

有人可以請解釋當這些規則應該,爲什麼它不處理的情況下?

+0

對不起人。事實證明這是CodeIgniter的一個問題。原來使用:$ config ['uri_protocol'] ='PATH_INFO';而不是:$ config ['uri_protocol'] ='AUTO';是需要的。所以這與Apache的重寫規則無關。所以我想問問版主。我應該刪除這個問題還是重新說明它? – Demolishun 2013-03-28 05:57:43

回答

1

刪除

RewriteBase /CILearn/ 

,並再次測試,看到這個頁面http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase,瞭解更多有關RewriteBase

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

你在哪裏放置.htaccess?我只是嘗試這樣做沒有RewriteBase和我仍然得到的同樣的錯誤:HTTP://本地主機/ cilearn /網站 – Demolishun 2013-03-27 09:05:36

+0

@Demolishun我把根htaccess以及在其上創建文件夾'CILearn'創造'index.php' – 2013-03-27 09:08:00

+0

我嘗試將其移動到根「htdocs」,它不起作用。有趣的是,我在Apache中打開了重寫日誌記錄,它的行爲就像是採用相同的路徑。所以也許重寫它工作正常,但在其他地方有一個錯誤。 – Demolishun 2013-03-27 09:16:09

1

會發生這種情況,當你的文件系統路徑是區分大小寫的。你有兩個選擇。

使用mod_speling在根目錄的.htaccess( /CILearn/.htaccess)

CheckSpelling on 
CheckCaseOnly on 

確保mod_speling與激活的東西像

LoadModule speling_module /path/to/apache2/modules/mod_speling.dll 

或者,你可以添加RewriteRule修復案例cilearn。這必須在根目錄中完成.htaccess

RewriteEngine on 
RewriteRule ^cilearn/(.*) /CILearn/$1 [NC,L] 
+0

@faa只要您替換絕對URL,您就不需要'RewriteBase'。所以是的,你可以刪除它,但它也不會傷害。 – 2013-03-27 11:21:27