我有 CodeIgniter(CI) 与 Wordpress(WP) 的集成。经过数周的努力工作,终于可以在我的本地 XAMP 中进行集成了。
当我将相同的结构移动到服务器/生产环境时,CI 和 WP 之间的集成看起来仍然不错(我这么说是因为 CI 的默认 Controller 工作/welcome/index.php),但是当我使用任何其他自定义 Controller 时,我只得到 404。
我根据我的谷歌搜索尝试了许多选项,例如 1. 调整 .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 服务器 URL:
http://mysitecom/ci/ --> works and gives me default Welcome index page
http://mysitecom/ci/book/ --> Does NOT work and gives me 404 error
说到底,我尝试了以下方法以查看是否可以将“book”强制设置为默认值,它仍然给了我 404 http://mysitecom/ci/ 书/
$route['default_controller'] = 'book';
不确定为什么默认 CI Controller 可以工作,但在 apache 网络服务器中不能使用自定义 Controller 。我可能遗漏了什么,但不确定是什么?
最佳答案
我注意到,您在配置和 .htaccess 中有未匹配项
$config['base_url'] = 'http://mysitecom/ci/';
在 .htaccess 中
RewriteBase /
这是指网站的根目录 http://mysitecom/
但您的实际应用程序运行在 http://mysitecom/ci/ 上
所以
替换为
RewriteBase /ci/
另一个区域是文件名,请确保所有 Controller 名称都以大写开头。
例如,如果我的 Controller 是 Admin
那么文件名应该是 Admin.php
并且你必须这样声明
class Admin extends CI_Controller{
--Code here---
}
关于php - codeigniter 在本地 xampp 上工作正常,但在所有自定义 Controller 的 apache Web 服务器上工作 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517146/