Ich habe eine index.html
in meinem /Users/igor/Sites/MySite
Ordner ( igor
ist mein Benutzername auf dem Mac). Links (zum Beispiel: <a href="/page">Page</a>
) führen alle zu localhost/page
statt zu http://localhost/~igor/MySite/page
. http://localhost
Berichte It works!
, in http://localhost/~igor/
sehe ich alle meine Dateien und Ordner.
Meine /private/etc/apache2/users/igor.conf
Datei:
<Directory "/Users/igor/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Meine /private/etc/apache2/extra/httpd-userdir.conf
Datei (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 -V
Ausgang:
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/MyLink
und nicht localhost/MyLink
? Danke.
Update: httpd -t -D DUMP_RUN_CFG
Rü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
Sie müssen die DocumentRoot
Direktive in Ihrer httpd.conf
. Suchen Sie zunächst mit Ihrem bevorzugten Editor nach der DocumentRoot
Richtlinie und fügen Sie Folgendes hinzu:
DocumentRoot "/Users/igor/Sites/MySite/MyLink"
Starten Sie Apache neu, damit er die aktualisierte Direktive liesthttpd.conf
localhost/MyLink
und 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/page
wie 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
.
Allan
httpd.conf
verweisen 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.Allan
/Library/WebServer/Documents/
. Führen Sie diesen Befehl aus:httpd -t -D DUMP_RUN_CFG
und posten Sie die Ergebnisse.Igor R.
Allan
httpd.conf
DocumentRoot ist nicht richtig eingestellt, weil eshttpd
nicht 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'Igor R.
DocumentRoot
und<Directory ... >
sollte seinUsers/igor/Sites/
?Allan
httpd.conf
dem Verzeichnis, in dem sich das Stammverzeichnis Ihrer Website befinden soll.Igor R.
Users/igor/Sites/
zu/Users/igor/Sites/
. Das hat es behoben.