Laravel 9同环境集成Surreal CMS编辑静态站点方案咨询
同主机部署下绕过Laravel解析集成Surreal CMS方案
核心逻辑是利用Web服务器「优先匹配站点根目录真实存在的文件、不转发给脚本入口解析」的默认特性,完全不需要修改routes/web.php配置,也不会影响原有Laravel业务的运行。
具体实现步骤
- 第一步:调整可编辑页面的存放路径
不要把Surreal CMS需要编辑的页面放在resources/views目录下,直接迁移到Laravel的public目录。这个目录是Laravel官方约定的对外可访问根目录,Web服务器会优先响应该目录下真实存在的文件请求,不会转发给Laravel路由解析。
按照Surreal CMS的路径访问规则存放文件即可:比如CMS需要预览/about.php,就把对应页面文件放在public/about.php路径;需要访问/contact.php就对应放public/contact.php。 - 第二步:确认Web服务器重写规则配置
Laravel默认自带的重写规则已经默认排除了真实存在的文件、目录,正常情况下不需要额外修改:- Apache环境(.htaccess):确认
public/.htaccess中包含以下规则,且该规则放在所有Laravel重写规则的最顶部,确保真实文件直接返回:# 真实存在的文件/目录直接响应,不走Laravel解析 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] - Nginx环境:在站点配置的server块中调整
try_files规则,优先匹配真实文件,不存在的请求再转给Laravel入口:location / { try_files $uri $uri/ @laravel; } location @laravel { rewrite ^ /index.php?$query_string last; } # 保留原有Laravel的PHP解析、静态资源缓存规则即可
- Apache环境(.htaccess):确认
- 第三步:适配页面文件格式
因为这些简易页面不需要调用任何后端数据,不需要保留Blade模板语法:直接把原有Blade文件里的动态语法剔除,只保留静态HTML内容,后缀改为.php放到public目录对应位置即可。纯静态HTML内容保存为.php格式可以被Web服务器正常解析输出,完全不影响展示效果。
安全配置注意事项
- 给Surreal CMS配置FTP凭据时,不要开放整个Laravel安装目录的权限,仅开放
public目录下存放可编辑页面的文件夹读写权限即可,避免CMS误修改Laravel核心代码、业务配置、业务逻辑文件,完全隔离两个站点的操作范围。 - 不要把Laravel的敏感文件(.env、vendor目录、storage目录、config目录等)放到public目录下,遵循Laravel默认的目录结构就不会出现敏感信息泄露问题。
配置完成后可以直接在浏览器访问对应带.php后缀的路径验证,如果能正常打开页面、不出现Laravel的404/500错误页,就说明配置生效,Surreal CMS的预览、编辑功能可以正常使用,所有编辑操作只会修改public下的静态页面文件,不会对原有Laravel业务应用造成任何影响。
内容的提问来源于stack exchange,提问作者Jorge Cordero
相关产品推荐
相关产品推荐

