2010-04-11 27 views
8

Penso che questa sia una domanda piuttosto semplice.Mod Rewrite Hide Folder

Come si fa una riscrittura di apache per nascondere una cartella.

EX: www.website.com/pages/login.php per www.website.com/login.php~~V~~singular~~3rd

o www.website.com/pages/home.php a www.website.com/~~V~~3rd home.php

La cartella deve essere sempre nascosta. grazie

risposta

12

Suppongo che quello che vuoi è che il browser richieda /home.php ma il server utilizzi effettivamente il file che si trova in /pages/home.php, giusto? In tal caso, dovrebbe funzionare:

Assicurarsi che il modulo mod_rewrite di apache sia installato. Quindi, utilizzare qualcosa di simile nella vostra configurazione di Apache, configurazione host virtuale, o (meno desiderabile) file .htaccess:

RewriteEngine On 
RewriteRule ^/(.*)$ /pages/$1 

Le regole utilizzano espressioni regolari, quindi si consiglia di guardare un punto di riferimento su questo argomento, se non sei sicuro. Leggi lo manual per maggiori informazioni su altre direttive (RewriteCond può essere molto utile) o opzioni di regole.

0

Se il vostro esempio riflette in realtà i file necessari, quindi nel file .htaccess:

#Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^/pages/(.+)\.php $1\.php [NC, L] 

Inoltre, se la directory ha il permesso di lettura, non può essere, in realtà "nascosta". Immagino tu intenda che non appare più nell'URL.

+1

Questo è quello che ho avuto anche io all'inizio. Ma questo significa che l'utente vedrebbe /pages/home.php nella barra degli indirizzi, mentre il server servirebbe su /home.php. Dopo il ripensamento, penso che l'OP voglia l'opposto ... – grossvogel

+0

@grossvogel - hai ragione - rileggo la sua domanda più da vicino. – TMG

8

So che il post originale era di un paio d'anni fa, ma è stato inserito per primo nel motore di ricerca, quindi forse questo aiuterà gli altri a cercare di nascondere il nome di una cartella nell'URL.

Non esattamente quello che voleva il poster originale, ma sulla stessa falsariga.

RewriteCond %{HTTP_HOST} ^mydomainname\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomainname\.com$ 
RewriteCond %{REQUEST_URI} !^/subfoldername/ 
RewriteRule (.*) /subfoldername/$1 

L'esempio riportato sopra dovrebbe reindirizzare qualsiasi richiesta di mydomainname.com o www.mydomainname.com alla directory NomeSottocartella nella directory principale del dominio, e il nome della sottocartella non sembra nell'URL.