OpenLiteSpeed服务器上CodeIgniter应用.htaccess重定向问题求助
OpenLiteSpeed上CodeIgniter去除index.php的解决方案
1. 修正CodeIgniter核心配置
打开application/config/config.php文件,调整以下两项配置:
- 将
$config['index_page']设置为空字符串:$config['index_page'] = ''; - 将
$config['uri_protocol']设置为REQUEST_URI:$config['uri_protocol'] = 'REQUEST_URI';
2. 替换为适配OpenLiteSpeed的.htaccess
原配置存在重复规则和不兼容OpenLiteSpeed的写法,替换为以下内容:
<IfModule mod_rewrite.c> RewriteEngine On # OpenLiteSpeed必须明确设置RewriteBase,根目录部署设为/,子目录则对应调整(如/app/) RewriteBase / # 跳过真实存在的文件和目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 排除静态资源、robots.txt等无需重写的路径 RewriteCond %{REQUEST_URI} !^/(assets|robots\.txt|favicon\.ico) # 重写请求到index.php处理,QSA保留查询参数,L终止规则 RewriteRule ^(.*)$ index.php?/$1 [L,QSA] # 保留HTTP授权头,避免CodeIgniter无法获取 RewriteCond %{HTTP:Authorization} .+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%0] # 301重定向favicon到正确路径 Redirect 301 /favicon.ico /assets/images/favicon.ico # 禁止直接访问.env配置文件 <Files .env> Order Allow,Deny Deny from all </Files> </IfModule>
3. 检查OpenLiteSpeed服务器设置
- 进入OpenLiteSpeed控制台,找到对应虚拟主机,在Rewrite选项卡中:
- 确保
Enable Rewrite设为Yes - 确保
Auto Load From .htaccess设为Yes
- 确保
- 确认虚拟主机的Document Root指向CodeIgniter的根目录(即包含
index.php的文件夹) - 重启OpenLiteSpeed服务,使配置生效:
systemctl restart lsws
内容的提问来源于stack exchange,提问作者NotACoder
相关产品推荐
相关产品推荐

