用PHP写一个.htaccess文件?

时间:2010-01-19 00:00:47

标签: php .htaccess

在我的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文件

3 个答案:

答案 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]