2014-01-31 61 views
0

我正在使用Codeigniter中的一个不使用标准routing.php文件的项目。 它调用了这样的函数:test.vi/index.php/controller/function。在codeigniter中删除index.php替代路由

我的目标是从URL与htaccess的重写删除的index.php:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 

而且也是这个config.php文件的变化:

$config['index_page'] = ''; 

我的问题是我需要路由所有的控制器/功能在我的route.php中,或者可以在不使用route.php文件的情况下完成?

+0

编辑你的httpd.conf – Zalaboza

回答

3

首先要确保你启用了mod_rewrite在httpd.conf:

这样做添加/确保它exsits此行

LoadModule rewrite_module modules/mod_rewrite.so 

然后在你的笨根文件夹中创建的.htaccess(在index.php文件旁边)而不是应用程序文件夹。

的.htaccess

DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|img|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

笨照顾你所有路线的;所以

controlers/welcome.php method=helloü可以通过

http://localhost/welcome/hello

访问它不喜欢你需要专门添加的路由laravel; codeigniter自动为您设置Fitch控制器。除非你有它存储在不同的位置或子文件夹内,那么除了设置默认路由之外,你不需要触摸route.php。

+0

我试过你的.htaccess仍然得到一个404,如果我不添加index.php的URL。 – Edelweiss

+0

您是否启用了在您的服务器中重写? – Zalaboza

+0

编辑我的回答:)干杯 – Zalaboza

0

这里是我在现场codeigniter网站的.htaccess重定向。第二部分免除某些目录。

#Redirect non-www to www: 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond $1  !^(index\.php|phpinfo\.php|test\.php|example\.php|images|i|css|js|beta|captcha|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
0

这个作品非常适合我......试试看..

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

使用'RewriteCond $ 1!^(index \ .php | img | css | js | robots \ .txt | favicon \ .ico)'允许您跳过文件/文件夹的重定向。也避免阻止搜索引擎 – Zalaboza

+0

试过它仍然是404.下面的.htaccess相同的任何想法? – Edelweiss

0

试试这个

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /test.v/index.php?/$1 [L] 

我想每个人都忘记上的.htaccess

添加test.vi文件夹名称