2010-01-19 38 views
7

在我的PHP站點上,我想有時會向用戶顯示一個維護頁面。我知道我可以很容易地在PHP中執行此操作,但我寧願使用htaccess文件,我認爲性能可能會更好。所以我想知道的是我可以在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

+0

http://us2.php.net/manual-lookup.php?pattern=write+file fwrite的是4打 – hobodave 2010-01-19 00:10:54

+1

@the向下選民,很明顯,我不知道如何做到這一點或者我不會「浪費我的時間寫這篇文章」,所以謝謝你的無數=) – JasonDavis 2010-01-19 00:17:48

回答

12

修改.htaccess文件可以使用fopen打開和fwrite任何代碼示例或提示,寫入文件。您需要以追加模式打開它,閱讀手冊以瞭解哪些適用。

這就是說,這聽起來像是一個奇怪的方式去做事情。

我完成你想要什麼只使用重寫檢查文件存在規則做:

RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f 
RewriteCond %{SCRIPT_FILENAME} !maintenance.html 
RewriteRule ^.*$ /maintenance.html [L] 

如果maintenance.html文件存在,那麼我的網站正在維護中。

+0

謝謝,我不確定這是不是某種受保護的文件,我沒有太多的使用文件的經驗。 – JasonDavis 2010-01-19 00:19:07

+0

我同意這裏的解決方案。我知道像Cpanel和Wordpress這樣的程序會寫入/自動生成.htaccess代碼。但它看起來像一個十噸重的錘子,可以輕鬆完成另一種方式。 – 2010-01-19 03:22:53

9

我強烈建議不是.htaccessPHP。您必須向Web服務器用戶(傳統上擁有非常低權限的用戶)寫入.htaccess;所有你需要的是一個可利用的腳本,攻擊者可以有效地重新配置你的服務器。

對於應用內切換維護模式,堅持讓PHP本身返回維護頁面。當您在應用程序本身上進行維護時,很容易暫時將文件重命名爲.htaccess's以啓用維護重寫。

0
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.php$ 
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]