2013-07-10 59 views
0

所以我有一個奇怪的問題與.htaccess文件和codeigniter。我的本地計算機上有一臺wamp服務器,並且在那裏按預期工作。我的文件夾一樣,WAMP/WWW/my_app應用和程序my_app文件夾我有.htaccess文件這樣的:Codeigniter和.htaccess文件忽略index.php

ErrorDocument 404 /index.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /my_app/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 

在煤礦井下的config.php GILE我有:

$config['base_url']=''; 
$config['index_page']=''; 
$config['uri_protocol']='AUTO'; 

所以我嘗試上傳該項目的debian服務器上的鏈接像apps.myserver.com/my_app。我把我的應用程序放到文件夾var/www/my_app。但訣竅是它不起作用。

我已經嘗試將uri_protocol更改爲所有5個選項,但沒有更改。我也嘗試把.htaccess文件放在var/www而不是var/www/my_app中,但是也沒有改變。

當我嘗試訪問沒有index.php前綴的控制器時,我總是收到那個愚蠢的404 Not Found錯誤。

任何想法?

編輯:我檢查服務器上的phpinfo,發現mod_rewrite是在加載模塊。

+0

首先檢查你的服務器上是否啓用了mod_rewrite,發送從頂部和底部刪除這個ErrorDocuemnt,並且只是註釋掉RewriteBase並且檢查 – umefarooq

+0

所以我註釋掉除第3行和第7行以外的所有行,並且沒有任何反應。這是否意味着我沒有在服務器上重寫模塊,或者這意味着它沒有讀取我的.htaccess文件? – gabrjan

+0

這是CI文檔RewriteEngine上的最小htaccess代碼 RewriteCond $ 1!^(index \ .php | images | robots \ .txt) RewriteRule ^(。*)$ /index.php/$1 [L] – umefarooq

回答

0

mod_rewrite模塊可以有幾個不同的擴展名。您的Debian服務器可能使用mod_rewrite.so而不是mod_rewrite.c。也就是說,如果您知道mod_rewrite已啓用,並且您的應用程序未被廣泛分發並且需要檢查它,則可以安全地取消if檢查。

您提到註釋掉除第3行和第7行之外的所有內容 - 您已註釋掉RewriteBase定義,該定義打破了內容。

嘗試一些簡單的,和工作從那裏:

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

此外,還有一個變化,你可以,如果一個.htaccess正在奇怪呢,是index.php後改變一切,以查詢字符串。注意?這裏:

RewriteRule ^(.*)$ index.php?/$1 [L] 

您可能會或可能不會改變笨的uri_protocol配置設置。我的猜測是你特別不會,但它是其他人有.htaccess問題的信息。

+0

好吧,我嘗試了所有擁塞的選項,但沒有效果。我真的放棄那個:S – gabrjan