Come impostare Document Root come cartella "Sites" in Apache su macOS Sierra?

1

Ho un index.html nella mia cartella /Users/igor/Sites/MySite ( igor è il mio nome utente su Mac). I collegamenti (ad esempio <a href="/page">Page</a> ) vanno tutti a localhost/page anziché http://localhost/~igor/MySite/page . http://localhost segnala It works! , in http://localhost/~igor/ Vedo tutti i miei file e cartelle.

Il mio /private/etc/apache2/users/igor.conf file:

<Directory "/Users/igor/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>  

Il mio file /private/etc/apache2/extra/httpd-userdir.conf (senza commenti):

UserDir Sites  
Include /private/etc/apache2/users/*.conf
<IfModule bonjour_module>
       RegisterUserSite customized-users
</IfModule>  

Inoltre ho decomposto le righe in httpd.conf come descritto qui .

Alcune righe dal mio httpd.conf :

User _www
Group _www


 <Directory />
    AllowOverride none
    Require all denied
</Directory>  



<Directory "/Library/WebServer/Documents">
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any

    AllowOverride None

    Require all granted
</Directory>

httpd -V output:

Server version: Apache/2.4.23 (Unix)
Server built:   Aug  8 2016 16:31:34
Server's Module Magic Number: 20120211:61
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

Come risolvere i collegamenti in modo che corrispondano a Sites/MySite/MyLink e non a localhost/MyLink ? Grazie.

Aggiornamento: httpd -t -D DUMP_RUN_CFG restituisce:

[Thu Oct 13 16:55:24.277291 2016] [so:warn] [pid 46810] AH01574: module php5_module is already loaded, skipping
AH00112: Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [/usr/docs/dummy-host2.example.com] does not exist
ServerRoot: "/usr"
Main DocumentRoot: "/Library/WebServer/Documents"
Main ErrorLog: "/private/var/log/apache2/error_log"
Mutex default: dir="/private/var/run/" mechanism=default 
Mutex mpm-accept: using_defaults
PidFile: "/private/var/run/httpd.pid"
Define: DUMP_RUN_CFG
User: name="_www" id=70 not_used
Group: name="_www" id=70 not_used  
    
posta Igor Rusinov 13.10.2016 - 14:07
fonte

2 risposte

1

Devi impostare la direttiva DocumentRoot nella tua httpd.conf . Innanzitutto, utilizza il tuo editor preferito, cerca la direttiva DocumentRoot e aggiungi quanto segue:

 DocumentRoot "/Users/igor/Sites/MySite/MyLink"

Riavvia Apache in modo che legga la direttiva aggiornata da httpd.conf

    
risposta data 13.10.2016 - 14:36
fonte
0

Non penso che qualcosa sia configurato in modo errato - penso che il tuo HTML sia sbagliato. Qualsiasi cosa nella cartella Sites contenente un link come <a href="/page">page</a> andrà SEMPRE a localhost/page . <a href="page">page</a> , d'altra parte, si risolverà in localhost/~igor/page come vuoi.

La barra che precede il target nel primo esempio la reindirizza a qualunque directory impostata come DocumentRoot (ad esempio la cartella che corrisponde a localhost ).

    
risposta data 13.10.2016 - 19:57
fonte

Leggi altre domande sui tag