迁移至CyberPanel+OLS后Rewrite规则失效求助
迁移到CyberPanel+OpenLiteSpeed后.htaccess Rewrite规则失效的解决办法
核心排查与修复步骤
确认OLS的Rewrite功能已启用
- 登录CyberPanel,进入对应网站的「网站设置」→「Rewrite Rules」,确保「Enable Rewrite」选项已勾选
- 若存疑,可通过OpenLiteSpeed控制台(默认端口7080)检查
mod_rewrite模块状态,CyberPanel默认已加载该模块,但需确认未被手动禁用
修正.htaccess权限
OLS对文件权限要求严格,需确保.htaccess权限为644,且所属用户/组匹配网站运行用户(多数场景下为nobody):chmod 644 /path/to/your/site/.htaccess chown nobody:nobody /path/to/your/site/.htaccess适配OLS的语法差异
你的.htaccess包含部分Apache旧语法,在OLS中兼容性不佳,做以下调整:- 替换旧的访问控制语法:
原代码:
改为OLS兼容写法:<Files .htaccess> order allow,deny deny from all </Files><Files .htaccess> Require all denied </Files> - 优化www转非www规则(避免
REQUEST_SCHEME的潜在兼容问题):
原规则:
替换为:RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteCond %{HTTPS} on RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteCond %{HTTPS} off RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
- 替换旧的访问控制语法:
强制重载OLS配置
- 在CyberPanel的「Rewrite Rules」页面点击「Save Changes」
- 或通过SSH执行命令重启OLS服务:
/usr/local/lsws/bin/lswsctrl restart
逐步测试规则
暂时注释掉压缩、缓存等非核心规则,只保留RewriteEngine On和1-2条Rewrite规则测试(比如先验证www转非www,再测试page/xxx.html的URL映射),确认核心功能正常后再逐步恢复所有规则。
验证方法
访问测试URL(如https://offerwall.offers4crypto.xyz/page/test.html),通过浏览器开发者工具的「网络」标签,查看请求是否被正确重写至/?page=test,且返回200状态码。
内容的提问来源于stack exchange,提问作者Dave Augood
相关产品推荐
相关产品推荐

