Configura una cartella radice separata per la directory di Sites

1

Ho riscritto l'intero post perché mi sono reso conto che inizialmente non aveva molto senso (sarebbe un commento divertente per un programma).


Sto sviluppando un progetto web in localhost con una struttura di directory molto organizzata e profondamente annidata.

La mia directory di progetto corrente:

# Absolute path
/Users/Username/Sites/myproject/
# Localhost path
localhost/~Username/myproject/

Con i file PHP, posso specificare include l'utilizzo del percorso assoluto:

include_once '/Users/Username/Sites/myproject/config/scripts/php/foo.php';

Tuttavia, con tag di ancoraggio HTML, href CSS e src JavaScript, non è possibile utilizzare il percorso assoluto. Ad esempio:

The following anchor tag using an absolute path to the file:

<a href="/Users/Username/Sites/myproject/blog/">Blog</a>

Clicking the link causes a 404 error:

The requested URL /Users/Username/Sites/myproject/blog/ was not found on this server.

Con il seguente esempio, guardando l'URL sulla pagina 404, posso vedere che il server ha cercato di cercare il file nella directory root dell'host locale, piuttosto che nella directory principale della mia macchina:

[http://localhost/Users/Username/Sites/myproject/blog/]

Semplicemente, indicherò il file usando un percorso assoluto nella directory localhost:

<a href="/~Username/myproject/blog/">Blog</a>

Ah! Una soluzione! Ho effettivamente scoperto questa soluzione mentre apportavo questa modifica al post e, anche se funzionerà in tutte le mie directory, indipendentemente da come annidate, causerà alcuni seri problemi lungo la linea. Prima di tutto, questo metodo non funziona per PHP include, PHP inizia la sua ricerca di file dalla radice della macchina, non dal server web. Ciò richiede percorsi assoluti che inizino completamente al livello /User , che dovrà essere modificato quando carico questo host di terze parti. Posso pensare a un altro caso, molto peggiore, in cui carica tutti i file su un host di terze parti e devo passare e modificare tutti i link, ad esempio:

<a href="/blog/">Blog</a>

Poiché myproject sarà la cartella principale ( www.myproject.com ). Certo, cambiare alcune posizioni di href, src e php include non sarà troppo male, ma dovrò cambiare ogni percorso su ogni file, il che richiederà molto tempo e, in base a quanto è grande questo progetto , quasi impossibile. E poi quando arriva l'incubo di dover modificare un file o due, cambiare alcuni CSS, ecc., Scaricherò i file relativi via FTP e poi dovrò cambiare tutti i percorsi di nuovo per lavorare sulla mia macchina locale. Questo sarebbe un incubo.

Quindi, la mia domanda è, come posso configurare il server Web OSX Apache per riconoscere myproject come cartella principale nella directory dei siti? È semplice come modificare DocumentRoot in httpd.conf ? Sono riluttante a modificare quel file perché se rovino qualcosa sono fregato. Anche se è semplice come cambiare DocumentRoot , cosa succede se sto lavorando su più progetti contemporaneamente? Non ho intenzione di entrare in ogni momento e modificare DocumentRoot solo per far funzionare i miei percorsi. Penso che sarebbe bello per ogni directory di primo livello nella cartella Sites essere la propria cartella radice per qualsiasi file o directory al suo interno, se questo ha senso. Ad ogni modo, qualsiasi consiglio sarebbe d'aiuto, sono praticamente morto nell'acqua in questo momento.

    
posta samrap 20.06.2014 - 09:36
fonte

0 risposte

Leggi altre domande sui tag