2011-05-30 173 views
2

我知道这已被问了一堆,但我不能让它工作。我试图从URL中删除index.php和控制器名称(我只有一个控制器)。从codeigniter中的url中删除控制器名称与路由

到目前为止,我能够删除的index.php,但我还是不能删除控制器名称

这里是我的htaccess文件:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|static|robots\.txt) 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

这里是顶部我的配置文件:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$config['base_url'] = '/main/'; 

$config['index_page'] = ''; 

而且我在routes文件把这个作为我的最后一行

我使用BlueHost,并且该网站是该帐户的插件域。不知道这是否有所作为。但截至目前,我能够删除index.php,但我也想删除“main”。

任何帮助将是伟大的! 谢谢,

回答

2

我不是在哪里我可以试试这个看看它是否有效,但如果你离开.htaccess你有它,并在你的路线文件中使用它?

$routes['(:any)'] = "main/$1"; 
+0

试过了......当我去到www。 mysite.com/services而不是www.mysite.com/main/services我刚刚得到一个404页面没有找到错误 – Bill 2011-05-30 19:36:21

+0

愚蠢的问题,但你的控制器被命名为主,对不对?另外,你在main.php中有一个index()函数吗?换句话说,如果您删除$ routes定义并尝试以/index.php/main/index访问该页面,它是否工作? – 2011-05-30 19:39:00

+0

是的,我的控制器被称为main,而main.php中的index()函数只是该网站的主页。 – Bill 2011-05-30 19:40:38

0

的事情之一,我看到这里,你可以改变是:

 
$config['base_url'] = 'http://your-site.com/'; 

而在你的routes.php文件

 
$route['default_controller'] = 'main'; 
+0

我有我的路线文件中设置的默认控制器。我有这样设置基础url的原因是因为我在我的本地机器上工作时使用了相对路径的url helper,一旦我切换了它,我只是删除了基本url,所以相对路径都会相同 – Bill 2011-05-31 13:00:33

+0

不介意上面的评论。我不得不等待5分钟来保存编辑,所以我宁愿添加另一条评论: 我也在使用bluehost,我的.htaccess其中一个CI站点是这样的:http://pastebin.com/xc3ASGFB 。我没有像你一样做过任何类似的事情,但为了追踪你在CI中获得的URL,我们需要在类CI_Router和方法_set_routing()和类CI_URI方法_fetch_uri_string中进行一些文本日志记录,方法非常自我解释,你可以查看每个请求的CI获取的URL。另外,uri_protocol被设置为REQUEST_URI。 – zokibtmkd 2011-05-31 18:22:52

相关问题