【问题标题】:codeigniter working fine on local xampp but 404 on apache web server for all custom controllercodeigniter 在本地 xampp 上工作正常,但在 apache web 服务器上为所有自定义控制器工作 404
【发布时间】:2016-09-27 18:44:12
【问题描述】:

我有 CodeIgniter(CI) 与 Wordpress(WP) 的集成。经过数周的努力,终于在我本地的 XAMP 中进行了集成。

当我将相同的结构移动到服务器/生产环境时,CI 和 WP 之间的集成看起来仍然不错(我这么说是因为 CI 的默认控制器可以工作 /welcome/index.php),但是当我使用任何其他自定义控制器时,我只得到 404。

我根据我的谷歌搜索工作尝试了许多选项,例如 1.tweaking .htaccess 2. 更改配置文件 3. 更改路由文件并且没有一个解决方案适合我。我希望有人可能对此有解决方案。感谢阅读,以下是详细信息。

网站结构:

Site Root
- All WP files
- .htaccess
- CI folder - contains all CI files
-- .htaccess

WP .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

CI .htaccess

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

CI 配置文件

$config['base_url'] = 'http://mysitecom/ci/';

本地网址:

http://localhost/ci/ --> works and gives me default Welcome index page
http://localhost/ci/book/ --> works and gives me right page

Apache 服务器网址:

http://mysitecom/ci/ --> works and gives me default Welcome index page
http://mysitecom/ci/book/ --> Does NOT work and gives me 404 error

为了它,我尝试了以下方法,看看我是否可以强制“预订”作为默认值,但它仍然给了我 404 以获取 http://mysitecom/ci/book/

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

不确定为什么默认 CI 控制器可以工作,但 apache Web 服务器中的自定义控制器却不能。我可能遗漏了什么,但不确定是什么?

【问题讨论】:

  • 你确定你的控制器的文件名和类的首字母只有大写吗?
  • 伟大的指针,这当然是一个问题。我现在对控制器和模型类的类和文件名使用大写。该解决方案解决了我的 404,但现在我得到完全没有错误的空白屏幕;检查了所有日志文件,除了“由于可能的配置错误,请求超出了 10 次内部重定向的限制。”

标签: php wordpress apache .htaccess codeigniter


【解决方案1】:

我注意到的是,你在 config 和 .htaccess 中没有匹配

$config['base_url'] = 'http://mysitecom/ci/';

在 .htaccess 中

RewriteBase /

这是指http://mysitecom/网站的根目录

但您的实际应用程序正在 http://mysitecom/ci/ 上运行

所以

替换为

RewriteBase /ci/

另一个区域是文件名,请确保所有控制器名称都以大写字母开头。

例如,如果我的控制器是Admin,那么文件名应该是Admin.php,你必须像这样声明

class Admin extends CI_Controller{
   --Code here---
}

【讨论】:

    【解决方案2】:

    您是否按照 https://www.cometchat.com/blog/how-to-integrate-codeigniter-with-wordpress/ 的指南将 codeigniter 与 wordpress 集成?第 1 点(添加 WordPress 引导文件)是最重要的。

    就我而言,我的 routes.php 文件如下所示:

    $route['(?i)bookings/(:any)'] = 'bookings/$1'; 
    $route['(?i)bookings'] = 'bookings';
    $route['(?i)(:any)'] = 'bookings/index/$1';  
    $route['default_controller'] = 'bookings/index';
    

    Bookings 是一个控制者,负责我的预订系统。它正在生产中https://eventsol.es/transfers/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-13
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多