我正在寻找在维护支持期间禁用Symfony应用程序的任何方法。我的意思是,以一种非常简单的方式:
1(我有一个应用程序,人们可以在其中输入以查看数据库的信息。
2(管理员可以更改数据库的信息。在此期间,数据库信息不应可访问,因为它一直在删除和更新。
3(我想要的是,是否有任何方法可以在此维护期间阻止应用程序并将用户(不是管理员用户(重定向到维护通知页面。
我记得有一个全局函数可以重定向所有网址,但我记不太清楚了.
在维护期间,我可以在数据库中(或任何其他方式(设置一个参数,并要求此值以了解应用程序是否处于维护期,以重定向到正常的url o重定向到通知维护页面。
如果您在数据库中存储参数以了解管理员是否正在更新数据,那么使用内核请求侦听器相当简单:
- 对数据库值进行测试
- 如果管理员是当前用户
请参阅此处 : 事件和事件侦听器
您可以在不更改任何项目代码的情况下直接在 Web 服务器配置中执行此操作。以下内容适用于NGINX(但请谨慎使用,因为if是邪恶的(,为Apache复制它应该没有问题。
location / {
# if the user is not you / an admin
if ($remote_addr != "your.ip.address") {
# return http code 503 (The server is currently unavailable (because it is overloaded or down for maintenance).)
return 503;
}
# otherwise, go ahead as usual
try_files $uri $uri/ /app.php?$is_args$args;
}
# show specific page when http code 503
error_page 503 @maintenance;
location @maintenance {
# which is maintenance.html
rewrite ^(.*)$ /maintenance.html break;
}
就我而言,IP检查是一个快速的解决方案。您还可以检查特定的 cookie 等。想法保持不变:应用程序与此无关。