2012-09-27 49 views
13

que accede a un archivo '.htaccess de superfolder y accidentalmente añadidoparada .htaccess redirigir

Rewrite/http://google.com/ 

Esto se hizo utilizando php. Ahora no puedo acceder a los archivos php en ningún directorio para revertir el cambio.

¿Hay algo que pueda hacer en un subdirectorio de root para detener la redirección dentro de esa carpeta?

Gracias.

Y por favor no pregunte más detalles sobre el 'accidente' .. estúpido error

+19

+1 para las risas – Peon

+0

Yo también ... jaja :) – fsenart

+0

¿Llamar administrador del servidor para eliminar ese archivo/línea? –

Respuesta

5

entré en contacto con administrador de servidores, tanto rieron de ella .. Aún interesante sin embargo cómo detenerlo redirigir a pesar de que no debería ocurrir si uso mod_rewrite.

Con mod_alias 'Redirect, estás jodido. Esa directiva se aplica en general, comenzando por el nodo de ruta donde se encuentra el archivo htaccess (si está en un archivo htaccess), o el nodo de ruta del bloque <Directory> en el que se encuentra. Por lo tanto, la única solución es obtener una administrador para eliminarlo.

Con mod_rewrite sin embargo, con un archivo htaccess, no actúa igual que dentro de un bloque <Directory>. Las reglas dentro de un archivo htaccess en un nodo de ruta dentro de un directorio tienen precedencia sobre las reglas dentro de un archivo htaccess en el directorio principal. Así que si había 2 htaccess:

/.htaccess:

RewriteEngine On 
RewriteRule ^/? http://google.com/ 

y en /tmp/.htaccess:

RewriteEngine On 
RewriteRule ^/?tmp/ http://stackoverflow.com/ 

Y vas a http://yourdomain.com/tmp/, que' Se redireccionará a http://stackoverflow.com/ porque las reglas en el directorio tmp tienen prioridad sobre las reglas en el directorio padre. En realidad, las reglas en el directorio principal no se aplican en absoluto, a menos que haya utilizado el RewriteOptions Inherit directive para heredar cualquier regla del directorio padre.

Debido a esto, sólo tiene que crear un archivo .htaccess con el siguiente:

RewriteEngine On 

Uso de FTP para cargar a su subdirectorio, y cargar el archivo php que utilizó para cambiar el archivo .htaccess del directorio padre . Luego solo use su navegador y vaya a ese archivo php en el subdirectorio.

Habiendo convertido simplemente en el motor de reescritura en el subdirectorio, sin reglas, significa:

  1. que tienen mod_rewrite activo en este directorio
  2. Puesto que el motor de reescritura está activada en este directorio, ignorar todos reglas en todos los directorios principales.
  3. Dado que el conjunto de reglas mod_rewrite está en blanco (no reales RerwiteRule 's) no pasa nada en absoluto
  4. El acceso a este directorio, apesar de que el motor de reescritura está activado, mod_rewrite no hace nada por lo que es como si el motor de reescritura está apagado.

Suena contra-intuitivo, pero así es como funciona.

+0

gracias, tiene sentido. –

1

Conectar usando su cliente FTP. Habilite los archivos ocultos en su cliente FTP (pruebe con FileZilla, este le permite hacer eso). Eliminar .htaccess en su superdirectorio. Si este archivo tiene otros datos, cópielo en su computadora local, realice cambios y vuelva a subirlo.

Aquí es un poco de ayuda más: http://www.intrepid.com.au/how-to-view-htaccess-with-filezilla/

+0

Solo tengo acceso a 'mi directorio' que está/en el ftp .. –

+1

Ouch ... Si no puede encontrar otra forma, infórmeselo al administrador del sistema. No debería haber sido capaz de modificar ese archivo '.htaccess' en primer lugar. –

+0

PHP no se preocupa por los permisos de FTP. Se ejecuta bajo diferentes usuarios y, a veces puede modificar los archivos del sistema con él si no está configurado correctamente –

Cuestiones relacionadas