CodeIgniter部署Plesk后菜单404错误求助
解决CodeIgniter部署Plesk后菜单404的问题
我帮你梳理下这个问题的排查和解决步骤——首页能正常加载但其他路由404,核心原因基本是URL重写规则没生效或者CodeIgniter的配置细节没到位,结合Plesk面板的环境,按下面的步骤来:
1. 调整CodeIgniter核心配置
先打开application/config/config.php,检查两个关键项:
- 把
index_page设为空字符串,这样URL里就不需要带index.php了:$config['index_page'] = ''; - 确保
uri_protocol设置为REQUEST_URI,这是最兼容现代服务器的配置:$config['uri_protocol'] = 'REQUEST_URI';
2. 配置.htaccess实现URL重写(重中之重)
CodeIgniter依赖.htaccess来把请求转发到index.php,你需要在你的文档根目录(httpdocs/public_html/cliftonhotel.ae)下创建或修改.htaccess文件,写入以下规则:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
如果上面的规则在Plesk里不生效,试试兼容Plesk环境的替代写法:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
写完.htaccess后,一定要去Plesk面板的域名设置 > Apache & nginx Settings里,把“Allow overrides”选项设置为All或者FileInfo,保存后让Apache重新加载配置。
3. 确认Plesk的文件结构和权限
- 检查你上传的文件结构:确保
public_html/cliftonhotel.ae目录下直接是CodeIgniter的核心文件(index.php、system、application),不要出现多余的嵌套层级。 - 调整目录权限:把
application/cache和application/logs目录的权限设为755(部分服务器可能需要777),确保PHP有写入权限——这虽然不是404的直接原因,但能避免后续其他问题。
4. 验证路由配置
如果前面的步骤都完成了还是404,检查application/config/routes.php里的路由规则,确保菜单对应的路由正确指向了控制器和方法,比如:
$route['about'] = 'pages/about'; // 假设关于页的控制器是Pages,方法是about
注意:Linux服务器上CodeIgniter的控制器和方法名称是区分大小写的,要确保和你的实际文件名称一致。
内容的提问来源于stack exchange,提问作者akku
相关产品推荐
相关产品推荐

