Wie richte ich Document Root als "Sites" -Ordner in Apache unter macOS Sierra ein?

Ich habe eine index.htmlin meinem /Users/igor/Sites/MySiteOrdner ( igorist mein Benutzername auf dem Mac). Links (zum Beispiel: <a href="/page">Page</a>) führen alle zu localhost/pagestatt zu http://localhost/~igor/MySite/page. http://localhostBerichte It works!, in http://localhost/~igor/sehe ich alle meine Dateien und Ordner.

Meine /private/etc/apache2/users/igor.confDatei:

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

Meine /private/etc/apache2/extra/httpd-userdir.confDatei (ohne Kommentare):

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

Außerdem habe ich Zeilen wie hierhttpd.conf beschrieben unkommentiert .

Einige Zeilen von mir 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 -VAusgang:

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"

Wie kann man Links reparieren, damit sie korrespondieren Sites/MySite/MyLinkund nicht localhost/MyLink? Danke.

Update: httpd -t -D DUMP_RUN_CFGRückgabe:

[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  
Nur ein Hinweis ... "Zeilennummern" sind irrelevant, da Sie auf die Anweisungen (wie DocumentRoot) httpd.confverweisen müssen . Anweisungen können sich überall in httpd.conf befinden und httpd.conf-Dateien unterscheiden sich je nach Distribution, Apache-Version und Benutzer, sodass Zeilennummern nicht hilfreich sind.
Ich sehe DocumentRoot nicht, aber ich sehe, dass Sie ein Verzeichnis in haben /Library/WebServer/Documents/. Führen Sie diesen Befehl aus: httpd -t -D DUMP_RUN_CFGund posten Sie die Ergebnisse.
@Allan In Frage stehende Ergebnisse hinzugefügt.
Irgendwo in Ihrem httpd.confDocumentRoot ist nicht richtig eingestellt, weil es httpdnicht den richtigen Wert hat. Siehe den Wert "Main Document Root". Sie müssen Ihre httpd.conf-Dateien (einschließlich der benutzerdefinierten) durchgehen und sicherstellen, dass Sie die Direktive richtig setzen; es sollte nur eine geben und nur in der Hauptdatei `httpd.conf'
@Allan DocumentRootund <Directory ... >sollte sein Users/igor/Sites/?
Suchen Sie nach DocumentRoot in httpd.confdem Verzeichnis, in dem sich das Stammverzeichnis Ihrer Website befinden soll.
@Allan Danke. Ich wechselte Users/igor/Sites/zu /Users/igor/Sites/. Das hat es behoben.

Antworten (2)

Sie müssen die DocumentRootDirektive in Ihrer httpd.conf. Suchen Sie zunächst mit Ihrem bevorzugten Editor nach der DocumentRootRichtlinie und fügen Sie Folgendes hinzu:

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

Starten Sie Apache neu, damit er die aktualisierte Direktive liesthttpd.conf

Habe es geschafft, Link geht immer noch zu localhost/MyLinkund gibt mir Error 403 Forbidden.

Ich glaube nicht, dass irgendetwas falsch konfiguriert ist - ich denke, Ihr HTML ist falsch. Alles in Ihrem Sites-Ordner, das einen Link wie enthält, <a href="/page">page</a>wird IMMER zu localhost/page. <a href="page">page</a>, auf der anderen Seite, wird so aufgelöst, localhost/~igor/pagewie Sie es beabsichtigen.

Der Schrägstrich vor dem Ziel im ersten Beispiel leitet es in das Verzeichnis um, das als Ihr festgelegt ist DocumentRoot(z. B. der Ordner, der ) entspricht localhost.

Fair genug. Hatte aus irgendeinem Grund zuerst nicht daran gedacht.