CakePHP 2.6.2静态资源加载及URL跳转异常排查与解决
解决CakePHP 2.6.2在Ubuntu 16.04下的资源加载、路由及Session异常问题
最近在Ubuntu 16.04环境部署CakePHP 2.6.2项目,已经做好了这些准备工作:启用了mod_rewrite,还把PHP版本从7降级到了5.6,但还是遇到了几个棘手的问题:
- 静态资源(CSS、JS)无法正常加载:比如页面里引入的
<script src="/admin/plugins/jQuery/jQuery-2.1.4.min.js"></script>,系统没有自动拼接项目文件夹名称,导致资源路径错误返回404 - URL必须带
index.php才能访问,同时Session功能完全失效:直接访问不带index.php的地址会报错,而且用户会话根本无法保存 - 重定向路径异常:使用
$this->redirect('/notifications/index/')跳转时,生成的地址是localhost/notifications/index/,而不是预期的localhost/projectfolder/notifications/index/
最终解决方案
排查了一圈才发现,问题根源是Apache没有加载项目中的.htaccess文件。只需要在虚拟主机的配置块里添加AllowOverride All,然后重启Apache服务,所有问题就都解决了。
补充说明:CakePHP依赖
.htaccess来实现URL重写、路径自动拼接等核心功能,Apache默认的AllowOverride None会阻止加载.htaccess,直接导致路由规则、资源路径处理全部失效。
内容的提问来源于stack exchange,提问作者Sammu Sundar
相关产品推荐
相关产品推荐

