2016-12-27 68 views
0

我使用CI版本3.1.0笨的.htaccess的工作,但不能找到控制器

和我httacces內部文件中像這樣

RewriteEngine on 
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 

和我有改變我的配置文件來$config['index_page'] = ''

我不工作,但CI似乎不能找到來自m url的控制器。 示例localhost/site/index.php/welcome其預期的工作,但當請求與localhost/site/welcome我找不到404頁面。

+0

我發現這個,可能會幫助https://gist.github.com/philipptempel/4226750 – dimis283

+0

不工作...它給我錯誤的對象沒有找到... – areiilla

+0

請注意:你的「httacces」文件應該拼寫成'htaccess' ...這是非常重要的。 – Sparky

回答

1

你能嘗試用

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

這取決於託管一個刀頭更換的最後一行,嫌我已經注意到所以這可能無法正常工作。是否啓用了mod_rewrite或等效功能?

如果您的應用程序在/ site /目錄下運行,您在$ config ['base_url']中放入了什麼?

+0

$ config ['base_url'] =''和我的網站只是在本地主機上運行。我以前的ci的其他項目可以在該mod下運行良好。我不明白髮生了什麼 – areiilla

+0

它在localhost上還是在localhost/site上運行?可能試試'$ protocol =(isset($ _ SERVER ['HTTPS'])&& $ _SERVER ['HTTPS'] =='on')? 'https://':'http://'; $ config ['base_url'] = $協議。 $ _SERVER ['HTTP_HOST']。 str_replace(basename($ _SERVER ['SCRIPT_NAME']),「」,$ _SERVER ['SCRIPT_NAME']);' – qwertzman

0

我使用這個:

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

none ...他們都沒有工作。我只是嘗試在htaccess文件夾中的每個組合。最好留下他們,並用最新的codeigniter開始新的項目...和中提琴的工作... – areiilla

+0

它與一個新項目合作?很高興你:) –

0

如果你已經按照此:tutorial,你需要將AllowOverride指令設置爲all在您的應用程序所在的路徑。這是必要的,因爲您正在使用一個.htaccess文件。 More

當此指令設置爲無,並且AllowOverrideList設置爲 無,.htaccess文件被完全忽略。在這種情況下,服務器 甚至不會嘗試讀取文件系統中的.htaccess文件。

記住:

你應該避免使用完全.htaccess文件,如果你有機會到 主要的httpd服務器配置文件。使用.htaccess文件會使您的Apache http服務器變慢。任何指令,它可以包含在 .htaccess文件在目錄塊設置好,因爲這將有更好的性能 同樣的效果。

這是一個開發者推薦:Here is