2010-01-19 23 views
7

En mi sitio PHP me gustaría mostrar a veces una página de mantenimiento a los usuarios. Sé que puedo hacer esto en PHP muy fácilmente, pero prefiero usar un archivo htaccess, creo que el rendimiento puede ser mejor de esta manera. Entonces, ¿qué quiero saber es si puedo modificar un archivo htaccess en PHP? Si es posible, estoy pensando,¿Escribir un archivo .htaccess en PHP?

1 - Tengo archivos y 1 tendrá el código debajo y el otro no, ambos archivos también contendrán mis otras cosas htaccess. Entonces php puede cambiar el nombre de estos 2 archivos cuando ejecuto un script de administrador para cambiar el archivo que se muestra, cambiando su nombre a .htaccess

2- Lea el contenido del archivo .htaccess actual y AÑADE el código siguiente en él, luego también podrá eliminarlo del archivo si es necesario.

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

Mi objetivo es construir una secuencia de comandos de administración que puede tener 1 procesamiento clic para cambiar la página de mantenimiento para mostrar o no mostrar.

Por favor, cualquier código de muestra o consejos sobre cómo hacer esto o si es incluso posible modificar un archivo .htaccess de PHP

+0

http://us2.php.net/manual-lookup.php?pattern=write+file fwrite es el cuarto hit – hobodave

+1

@ el down-votantes, obviamente, no sé cómo hacer esto o no habría "perdido el tiempo escribiendo esto", así que gracias por nada =) – JasonDavis

Respuesta

12

Puede utilizar fopen para abrir y fwrite para escribir en un archivo. Querrá abrirlo en el modo de adición, lea el manual para ver cuál aplica.

Dicho esto, esto suena como una forma extraña de hacer las cosas.

puedo lograr lo que estás tratando de hacer utilizando sólo reescribir las reglas que comprueban la presencia de archivos:

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

Si el archivo maintenance.html está presente, entonces mi sitio se encuentra en mantenimiento.

+0

Gracias, no estaba seguro de si esto era algún tipo de archivo protegido o no, realmente no tengo mucha experiencia trabajando con archivos. – JasonDavis

+0

Estoy de acuerdo con la solución aquí. Sé que programas como Cpanel y Wordpress escribirán/generarán automáticamente el código .htaccess. Pero parece un martillo de diez toneladas para algo que se hace fácilmente de otra manera. –

9

Recomiendo encarecidamente no escribiendo .htaccess de PHP. Debería otorgar acceso de escritura al usuario del servidor web (que tradicionalmente tiene muy poco privilegio) al .htaccess; todo lo que necesita es una secuencia de comandos explotable y un atacante podría reconfigurar efectivamente su servidor.

Para un modo de mantenimiento en los botones de la aplicación se adhieren a tener PHP devolver la página de mantenimiento. Cuando realiza el mantenimiento de la aplicación en sí, es bastante fácil cambiar el nombre temporalmente de un archivo en la posición .htaccess's para habilitar la reescritura de mantenimiento.

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