【问题标题】:CodeIgniter won't run in a subdirectoryCodeIgniter 不会在子目录中运行
【发布时间】:2012-07-08 02:52:02
【问题描述】:

我有一个 CodeIgniter 安装在我们的 Web 根目录中运行,我将它复制到一个名为 /dev 的子目录中...我编辑了 config/config.php 文件以反映更改,所以它现在是这样的:

$config['base_url']  = 'http://mysite.com/dev';
$config['sbase_url']     = 'https://mysite.com/dev';
$config['default_email'] = 'noreply@mysite.com';
$config['site_url']  = 'http://mysite.com/dev';

这是我的 .htaccess 文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

当我将鼠标悬停在网站上的任何链接上时,它们都是正确的,例如,联系我们页面链接显示为 www.mysite.com/dev/contact,但是当我单击任何链接时,我会收到 404 错误...

我缺少一些常见的东西吗?

【问题讨论】:

标签: .htaccess codeigniter routes


【解决方案1】:

启用 FollowSymlinks 并在 RewriteRule 中的 index.php 前添加 ./

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  # block hidden directories
  RewriteRule "(^|/)\." - [F]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>

另外,我将留空$config['base_url'] = ''; 并在构建链接时使用base_url() url 帮助程序,这使得移动环境更容易(例如 subdir'd dev & root-level production)。

...当然,确保在您的 Apache 配置中启用了 ModRewrite。

【讨论】:

  • 这没有帮助...默认控制器显示,即 www.mysite.com/dev 解析索引页面,但如果您尝试转到任何其他页面,如 www.mysite.com /dev/关于它 404 的
  • 你确定你的 Apache 服务器上启用了 ModRewrite 吗?
  • 该站点的根版本工作正常,我有一个 .htaccess 文件从 URL 中删除 index.php,它可以工作。
  • 尝试将RewriteBase /dev/ 下面的RewriteBase /dev/ 添加到.htaccess - 我相信应该可以解决它。
  • 似乎没有用...我无权访问 httpd.config 文件,有什么方法可以使用 php 测试 mod_rewrite 吗?
猜你喜欢
  • 1970-01-01
  • 2012-02-03
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多