在我的PHP网站上,我有时会向用户显示维护页面。我知道我可以很容易地在PHP中执行此操作,但我宁愿使用htaccess文件,我认为这种方式可能会更好。所以我想知道的是我可以在PHP中修改htaccess文件吗?如果有可能我也在想,
1 - 有文件,1有下面的代码,而另一个不会,两个文件也包含我的其他htaccess东西。然后,当我运行管理脚本来切换显示哪个文件时,php可以重命名这两个文件,方法是将其名称更改为.htaccess
2-阅读当前.htaccess文件的内容并将下面的代码附加到其中,如果需要,也可以将其从文件中删除。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
我的目标是构建一个管理脚本,可以进行1次点击处理,将维护页面更改为显示或不显示。
请提供有关如何执行此操作的示例代码或提示,或者是否可以从PHP修改.htaccess文件
答案 0 :(得分:12)
您可以使用fopen打开并fwrite写入文件。您需要在附加模式下打开它,阅读手册以查看适用的模式。
那就是说,这听起来像是一种奇怪的做法。
我使用仅检重文件存在的重写规则来完成您尝试做的事情:
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [L]
如果出现了maintenance.html文件,那么我的网站正在维护中。
答案 1 :(得分:9)
我强烈建议您从.htaccess
撰写不撰写PHP
。您必须为Web服务器用户(传统上具有非常低权限的用户)提供对.htaccess
的写访问权限;您只需要一个可利用的脚本,攻击者就可以有效地重新配置您的服务器。
对于应用内切换维护模式,坚持让PHP
本身返回维护页面。当您对应用程序本身进行维护时,可以很容易地暂时将文件重命名为.htaccess's
位置以启用维护重写。
答案 2 :(得分:0)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]