2012-09-27 17 views
13

ho accesso a una 'file .htaccess di Superfolder e accidentalmente aggiuntofermata .htaccess reindirizzare

Rewrite/http://google.com/ 

Questo è stato fatto utilizzando php. Ora non posso accedere ai file php in nessuna directory per annullare la modifica.

C'è qualcosa che posso fare in una sottodirectory di root per fermare il reindirizzamento all'interno di quella cartella?

Grazie.

E per favore non chiedere ulteriori dettagli circa l' 'incidente' .. stupido errore

+19

+1 per le risate – Peon

+0

Anche io ... haha ​​:) – fsenart

+0

Chiama l'amministratore del server per rimuovere quel file/linea? –

risposta

5

ho contattato amministratore del server, entrambi ridevano di esso .. comunque interessante anche se come fermarlo riorientare anche se non dovrebbe accadere se uso mod_rewrite.

Con mod_alias' Redirect, sei fregato. Tale direttiva viene applicata su tutta la linea, a partire dal nodo di percorso in cui si trova il file htaccess (se si trova in un file htaccess) o dal nodo di percorso del blocco <Directory> in cui si trova. Quindi l'unica soluzione è ottenere un admin per rimuoverlo.

Con mod_rewrite tuttavia, con un file htaccess, ma non agisce lo stesso all'interno di un blocco <Directory>. Le regole all'interno di un file htaccess in un nodo di percorso all'interno di una directory hanno la precedenza sulle regole all'interno di un file htaccess nella directory padre. Quindi, se avete avuto 2 file .htaccess:

/.htaccess:

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

e in /tmp/.htaccess:

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

E si va a http://yourdomain.com/tmp/, è' Verrà reindirizzato a http://stackoverflow.com/ perché le regole nella directory tmp hanno la precedenza sulle regole nella directory superiore. Di fronte, le regole nella directory principale non vengono applicate a meno che non si sia utilizzato lo RewriteOptions Inherit directive per ereditare eventuali regole dalla directory padre.

A causa di questo, si può semplicemente creare un file .htaccess con il seguente:

RewriteEngine On 

Usa FTP per caricare al vostro sottodirectory, e caricare il file php che si è utilizzato per modificare file .htaccess della directory genitore . Quindi usa il browser e vai a quel file php nella sottodirectory.

aver semplicemente acceso il motore di riscrittura nella sottodirectory, senza regole, significa:

  1. devo mod_rewrite attivo in questo elenco
  2. Dato che il motore di riscrittura è attivato in questa directory, ignorare tutto regole in tutte le directory genitore.
  3. Dal momento che il set di regole mod_rewrite è vuoto (nessun effettivi RerwiteRule 's) non succede nulla affatto
  4. L'accesso a questo elenco, benche' il motore di riscrittura è acceso, mod_rewrite non fa nulla quindi è come se il motore è spento riscrittura.

I suoni sono contro-intuitivi, ma è proprio così che funziona.

+0

grazie, ha senso. –

1

Connetti tramite il client FTP. Abilita i file nascosti nel tuo client FTP (prova FileZilla, questo ti permette di farlo). Elimina .htaccess nella tua superdirectory. Se questo file contiene altri dati, copialo sul tuo computer locale, apporta le modifiche e caricalo di nuovo.

Ecco qualche aiuto: http://www.intrepid.com.au/how-to-view-htaccess-with-filezilla/

+0

Ho accesso solo alla "mia directory" che è/nel ftp .. –

+1

Ouch ... Se non riesci a trovare un altro modo, fallo sapere all'amministratore di sistema. Non dovresti essere in grado di modificare il file '.htaccess' in primo luogo. –

+0

PHP non si preoccupa delle autorizzazioni FTP. Funziona con utenti diversi e talvolta è possibile modificare i file di sistema con esso se non impostato correttamente –

Problemi correlati