2016-12-27 64 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