¿Cómo configurar Document Root como carpeta "Sitios" en Apache en macOS Sierra?

Tengo un index.htmlen mi /Users/igor/Sites/MySitecarpeta ( igores mi nombre de usuario en Mac). Todos los enlaces (por ejemplo: <a href="/page">Page</a>) van a localhost/pageen lugar de http://localhost/~igor/MySite/page. http://localhostinformes It works!, en http://localhost/~igor/Veo todos mis archivos y carpetas.

mi /private/etc/apache2/users/igor.confarchivo:

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

Mi /private/etc/apache2/extra/httpd-userdir.confarchivo (sin comentarios):

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

También descomenté líneas httpd.confcomo se describe aquí .

Algunas lineas de mi 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 -Vproducción:

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"

¿Cómo arreglar los enlaces para que correspondan Sites/MySite/MyLinky no localhost/MyLink? Gracias.

Actualización: httpd -t -D DUMP_RUN_CFGdevuelve:

[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  
Solo una pista ... "los números de línea" son irrelevantes si httpd.confnecesita hacer referencia a las directivas (como DocumentRoot). Las directivas se pueden ubicar en cualquier lugar en httpd.conf y los archivos httpd.conf difieren según la distribución, la versión de Apache y el usuario, por lo que los números de línea no ayudan.
No veo DocumentRoot, pero veo que tienes un directorio en /Library/WebServer/Documents/. Ejecute este comando: httpd -t -D DUMP_RUN_CFGy publique los resultados.
@Allan Resultados agregados en cuestión.
En algún lugar de su httpd.confDocumentRoot no está configurado correctamente porque httpdno tiene el valor correcto. Consulte el valor "Raíz del documento principal". Deberá revisar sus archivos httpd.conf (incluidos los personalizados) y asegurarse de que está configurando la directiva correctamente; debe haber solo uno y solo debe estar en el 'httpd.conf' principal
@Allan DocumentRooty <Directory ... >debería ser Users/igor/Sites/?
Busque DocumentRoot para httpd.confconvertirlo en el directorio donde desea que esté la raíz de su sitio web.
@Alan Gracias. cambié Users/igor/Sites/a /Users/igor/Sites/. Eso lo arregló.

Respuestas (2)

Tienes que establecer la DocumentRootdirectiva en tu httpd.conf. Primero, usando su editor favorito, busque la DocumentRootdirectiva y agregue lo siguiente:

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

Reinicie Apache para que lea la directiva actualizada dehttpd.conf

Lo hice, el enlace sigue yendo a localhost/MyLinky me da el Error 403 Prohibido.

No creo que nada esté configurado incorrectamente, creo que su HTML es incorrecto. Cualquier cosa en su carpeta de Sitios que contenga un enlace como <a href="/page">page</a>SIEMPRE irá a localhost/page. <a href="page">page</a>, por otro lado, se resolverá localhost/~igor/pagecomo usted pretende.

La barra inclinada que precede al destino en el primer ejemplo lo redirige a cualquier directorio que esté configurado como suyo DocumentRoot(por ejemplo, la carpeta que corresponde a localhost).

Me parece bien. No lo pensé al principio por alguna razón.