2010-09-07 7 views
6

Voglio creare un'applicazione in PHP che implementa la funzione di directory virtuale.
Esempio: http://mydomain.com/user001 verrà visualizzato il contenuto dell'URL http://mydomain.com/index.php?user=user001. Come lo posso fare?Come creare directory virtuali in PHP?

Nota:
sto utilizzando server Apache.

+0

Dai un'occhiata ad es. [Silex] (http://silex.sensiolabs.org/) o [Symfony Routing Component] (http://symfony.com/doc/current/components/routing/introduction.html). Meglio usare componenti ben collaudate piuttosto che rotolare le tue cose. – nietonfir

risposta

5

Il modo tradizionale per farlo è mod_rewrite.

+0

Se voglio farlo per un'applicazione di blogging, devo fare mod_rewrite per ogni voce. Esempio: ogni volta che creo una domanda in stackoverflow.com, crea automaticamente una directory virtuale per quella domanda. – chanchal1987

+0

no, avresti impostato una regex nella regola di riscrittura per farla corrispondere a qualsiasi voce. – GrandmasterB

+0

@GrandmasterB: OK Grazie ... – chanchal1987

2

Leggere this friendly article regarding rewrite.

Successivamente, prova a trovare un modo semplice in PHP per analizzare questa variabile $ _SERVER ['REQUEST_URI'].

Dopo aver fatto ciò, si ha il nome della directory e si possono ottenere i suoi dati dal DB.

0

Intercetta la richiesta HTTP utilizzando l'elemento 'REQUEST_URI' di $ _SERVER. Questo restituisce (credo) solo la pagina richiesta, non l'intero URI/URL - maggiori informazioni here. Una volta che hai afferrato la richiesta della pagina, sostituisci l'indirizzo del file reale che è necessario. Ad esempio, l'utente-friendly www.somewebsite.com/page01 diventa una richiesta per i più goffo suono www.somewebsite.com?page01.php. Questo metodo non creerà una directory virtuale, in quanto tale, ma dovrebbe funzionare correttamente. Ho usato un metodo simile sul mio IT website, in cui ogni pagina viene caricata tramite index.php, consentendo a quel file di tenere un registro dei visitatori in tempo reale (il sito ha Webalizer, che funziona un giorno o giù di lì in modo arretrato).

Riscrivere il nome del file potrebbe funzionare, anche se non è per il mio gusto personale. L'uso di PHP per effettuare un URI/URL-swap potrebbe probabilmente portare il beneficio di una minore richiesta del server, a causa del minor tempo di lettura/scrittura del disco rispetto alla riscrittura del nome file.

Spero che questo aiuti.