【问题标题】:remove controller name from url in codeigniter with routes使用路由从 codeigniter 中的 url 中删除控制器名称
【发布时间】:2011-09-05 00:33:05
【问题描述】:

我知道这已经被问过很多次了,但我根本无法让它发挥作用。我正在尝试从 URL 中删除 index.php 和控制器名称(我只有一个控制器)。

到目前为止,我可以删除 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['([a-z\_]+)$'] = "main/$1";  

我正在使用 BlueHost,该站点是该帐户的附加域。不确定这是否有什么不同。但截至目前,我能够删除 index.php,但我也想删除“main”。

任何帮助都会很棒! 谢谢,

【问题讨论】:

    标签: php .htaccess codeigniter url-rewriting


    【解决方案1】:

    我无法尝试此操作以查看它是否有效,但是如果您保留 .htaccess 并在您的路由文件中使用它会怎样?

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

    【讨论】:

    • 试过...当我去 www.mysite.com/services 而不是 www.mysite.com/main/services 我只是得到一个 404 page not found 错误
    • 愚蠢的问题,但你的控制器被命名为 main,对吧?另外,你在 main.php 中有 index() 函数吗?换句话说,如果你删除 $routes 定义并尝试以 /index.php/main/index 的形式访问页面,它是否有效?
    • 是的,我的控制器叫main,main.php中的index()函数就是网站的首页。
    【解决方案2】:

    我在这里看到的可以更改的内容之一是:

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

    在你的 routes.php 中

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

    【讨论】:

    • 我在路由文件中设置了默认控制器。我以这种方式设置基本 url 的原因是,当我在本地机器上工作时,我使用 url 帮助程序来获取相对路径,一旦我将其切换到现场,我就删除了基本 url,所以相对路径都是一样的
    • 不要介意上面的评论。我必须等待 5 分钟才能保存编辑,所以我宁愿添加另一条评论:我也在使用 bluehost,我的 .htaccess 用于其中一个 CI 站点是这样的:pastebin.com/xc3ASGFB。我没有像你那样做任何类似的事情,但是要追踪你在 CI 中获得的 url 是在类 CI_Router 和方法 _set_routing() 和类 CI_URI 方法 _fetch_uri_string 中进行一些文本记录,这些方法非常自我解释,你可以查看 CI 获取的每个请求的 url。此外,uri_protocol 设置为 REQUEST_URI。
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多