У меня есть три виртуальных хоста, работающих в apache2 на моем личном Macintosh под управлением OS X Mavericks, и я столкнулся с путаницей. Они настроены в моем файле httpd-vhosts.conf следующим образом:
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
ServerAlias localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/dev1"
ServerName dev1.local
ServerAlias www.dev1.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/dev2"
ServerName dev2.local
ServerAlias www.dev2.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/dev3”
ServerName dev3.local
ServerAlias www.dev3.local
</VirtualHost>
Примечание. Первая запись позволяет мне ввести «localhost» и загрузить его, как и следовало ожидать, без запуска виртуальных хостов.
dev1 и dev2 работают нормально, но я получаю сообщение об ошибке 404: «Запрошенный URL / не найден на этом сервере». когда я пытаюсь загрузить dev3 на локальный компьютер. Все три папки Dev имеют одинаковые разрешения, имена которых я проверил. Когда я проверил error_log, я обнаружил следующее:
[Пт, 24 января, 12:55:07 2014] [ошибка] [клиент 127.0.0.1] Файл не существует: / Library / WebServer / Documents / dev3 \ xe2 \ x80 \ x9d
Кто-нибудь знает, почему Apache добавляет "\ xe2 \ x80 \ x9d" в конец пути к папке или почему dev3 не загружается? (Я подозреваю, почему именно эти случайно добавленные символы) Любой ввод приветствуется! Спасибо за прочтение!
DocumentRoot "/Library/WebServer/Documents/dev3”
^----- no proper quotation mark :9
Если у вас установлен php:
<?php
echo "\xe2\x80\x9d";
// or
echo utf8_decode("\xe2\x80\x9d");
// should give you ”
Вы пропустили VirtualHost
настройка.
НГ: DocumentRoot "/Library/WebServer/Documents/dev2"
ХОРОШО: DocumentRoot /Library/WebServer/Documents/dev2
DocumentRoot "/ Библиотека / Веб-сервер / Документы"
так должно быть
DocumentRoot / Библиотека / WebServer / Документы
нет "" в DocumentRoot