【问题标题】:Codeigniter default routing doesn't workCodeigniter 默认路由不起作用
【发布时间】:2013-10-22 09:45:13
【问题描述】:

在我的新 CI 项目中,每次尝试访问除基本 url 和基本 url /index.php 之外的任何 URL 时,都会收到以下错误。例如,如果我想访问“关于”页面:

未找到

在此服务器上找不到请求的 URL /my_base_url/about。

这就是我的 routes.php 文件的样子:

$route['default_controller'] = "base";
$route['about'] = "base/about";
$route['404_override'] = '';

我已经三次检查了我的 Base 控制器,它肯定有一个 about 方法(它加载一个现有的“关于”视图)。

这是我的 .htaccess 文件:

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

下面是我在 config.php 文件中设置的一些内容:

$config['base_url'] = 'http://localhost/my_base_url/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

我做错了什么?非常感谢任何帮助!

【问题讨论】:

    标签: php .htaccess codeigniter routes


    【解决方案1】:

    htaccess 文件应该在my_base_url 目录中,并且你应该包含一个重写库:

    Options FollowSymLinks
    
    RewriteEngine on
    RewriteBase /my_base_url/
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
    

    【讨论】:

    • 我试过这个,但后来得到“禁止您无权访问此服务器上的 /my_base_url/”。 (不过,我检查了该目录的权限,应该可以查看它!)
    • @anniebabanie 你确定index.phpDirectoryIndex 列表中的文件之一吗?您确定 htaccess 文件实际上正在被读取(并且您已加载 mod_rewrite)吗?
    • 我检查了我的 httpd.conf 文件,是的,index.php 已列出。我测试了是否通过输入乱码来读取 htaccess 文件(导致内部服务器错误——所以是的,它正在被读取),并且是的 mod_rewrite 正在加载。
    • @anniebabanie 尝试检查您的错误日志,它应该会给您一个返回 403 Forbidden 的原因(无法访问,或配置不允许等)
    • 我发现这个“[Mon Oct 14 12:22:54 2013] [error] [client ::1] Options FollowSymLinks or SymLinksIfOwnerMatch is off 这意味着 RewriteRule 指令被禁止” – 我不是习惯于调试 apache 服务器错误,我应该在哪里解决这个问题?
    【解决方案2】:

    如果您使用 Apache,请查看配置文件。

    LoadModule rewrite_module modules/mod_rewrite.so

    允许全部覆盖

    【讨论】:

    • 是的,这两行都在我的 httpd.conf 文件中。我尝试了 Jon Lin(下)的建议,但现在我只是得到“禁止您无权访问此服务器上的 /my_base_url/。”
    猜你喜欢
    • 2010-11-19
    • 2016-10-30
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多