2010-01-19 27 views
7

Sul mio sito PHP mi piacerebbe a volte mostrare agli utenti una pagina di manutenzione. So che posso farlo in PHP molto facilmente, ma preferirei usare un file htaccess, penso che le prestazioni potrebbero essere migliori in questo modo. Quindi quello che voglio sapere è che posso modificare un file htaccess in PHP? Se è possibile, sto pensando,Scrivi un file .htaccess in PHP?

1 - I file e 1 avranno il codice qui sotto e l'altro no, entrambi i file conterranno anche le mie altre informazioni su htaccess. Quindi php può rinominare questi 2 file quando eseguo uno script admin per cambiare il file che viene mostrato, cambiando il suo nome in .htaccess

2- Leggi il contenuto del file .htaccess corrente e APPENDI il codice qui sotto, quindi anche essere in grado di rimuoverlo dal file, se necessario.

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

Il mio obiettivo è quello di costruire uno script di amministrazione che può avere uno scatto di elaborazione per cambiare la pagina di manutenzione per mostrare o non mostrare.

Si prega di qualsiasi codice di esempio o suggerimenti su come fare questo o se è ancora possibile modificare un file .htaccess da PHP

+0

http://us2.php.net/manual-lookup.php?pattern=write+file fwrite è il 4 ° ha colpito – hobodave

+1

@the down-elettori, ovviamente, non so come fare o non avrei "perso tempo a scrivere questo" così grazie per niente =) – JasonDavis

risposta

12

È possibile utilizzare fopen per aprire e fwrite di scrivere su un file. Dovrai aprirlo in modalità append, leggere il manuale per vedere quale si applica.

Detto questo, sembra uno strano modo di fare le cose.

io realizzare ciò che si sta cercando di fare utilizzando solo riscrivere le regole che controllano la presenza di file:

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

Se il file maintenance.html è presente, allora il mio sito è in fase di manutenzione.

+0

Grazie, non ero sicuro che si trattasse di una sorta di file protetto o meno, non ho molta esperienza con i file. – JasonDavis

+0

Sono d'accordo con la soluzione qui. So che programmi come Cpanel e Wordpress scriveranno in/autogenerare codice .htaccess. Ma sembra un martello da dieci tonnellate per qualcosa che può essere facilmente fatto in un altro modo. –

9

Si consiglia vivamente di non scrittura .htaccess da PHP. Dovresti fornire l'accesso in scrittura al server web (che tradizionalmente ha un privilegio molto basso) a .htaccess; tutto ciò di cui hai bisogno è uno script sfruttabile e un utente malintenzionato potrebbe riconfigurare in modo efficace il tuo server.

Per una modalità di manutenzione degli interruttori in-app attenersi al fatto che lo stesso PHP restituisce la pagina di manutenzione. Quando si esegue la manutenzione sull'app stessa, è abbastanza facile rinominare temporaneamente un file nella posizione .htaccess's per abilitare la riscrittura di manutenzione.

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