You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CyberPanel VPS上保护Laravel 8项目的.env/.yml/.json等文件

解决CyberPanel上Laravel .htaccess文件访问限制失效问题

问题分析

你的.htaccess规则在本地正常但在CyberPanel上失效,主要是两个核心原因:

  • Apache版本兼容问题:你使用的order allow,deny是Apache 2.2的语法,而CyberPanel默认搭载Apache 2.4,需改用新版权限控制语法
  • CyberPanel虚拟主机未完全开启.htaccess支持:默认配置可能限制了AllowOverride权限,导致自定义规则无法生效

修改后的.htaccess配置

替换当前代码,改用Apache 2.4兼容规则,同时优化敏感文件匹配逻辑:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On

    # 处理授权头
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # 禁止直接访问敏感文件
    RewriteRule ^\.env - [F,L]
    RewriteRule \.(json|lock|xml|yml|yaml)$ - [F,L]

    # 移除URL末尾斜杠(非文件夹)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # 所有请求转发到前端控制器
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

规则说明

  • 用RewriteRule替代<Files>块,彻底规避Apache版本兼容问题
  • [F]标记直接返回403 Forbidden,[L]表示终止后续规则执行
  • 合并所有敏感文件后缀匹配,规则更简洁高效

CyberPanel配置检查

  1. 登录CyberPanel,进入网站 -> 列表网站,找到对应Laravel项目的网站,点击管理
  2. 进入Apache配置 -> 编辑.htaccess,确认文件放在Laravel的public目录下(Laravel的Web根目录必须指向public)
  3. 回到Apache配置,点击编辑虚拟主机配置,找到<Directory>块,确保配置如下:
    <Directory /home/你的域名/public>
        AllowOverride All
        Require all granted
    </Directory>
    
  4. 保存配置后重启Apache服务:
    systemctl restart httpd
    

验证测试

访问域名下的敏感文件(例如你的域名/.env或你的域名/composer.json),应返回403 Forbidden状态码。

内容的提问来源于stack exchange,提问作者chigs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:52:35