Можно ли настроить xampp для обслуживания файла вне каталога htdocs
?
Например, скажем, у меня есть файл, расположенный следующим образом:
C:\projects\transitCalculator\trunk\TransitCalculator.php
и мои xampp файлы обычно подаются из:
C:\xampp\htdocs\
(потому что это настройка по умолчанию) Есть ли способ сделать Apache распознанным и обслуживать мой файл TransitCalculator.php
, не перемещая его под htdocs
? Я бы хотел, чтобы Apache обслуживал/имел доступ ко всему содержимому каталога проектов, и я не хочу переместить каталог проектов в htdocs
.
edit: отредактировано, чтобы добавить Apache в заголовок вопроса, чтобы сделать Q/A более "доступным для поиска"
Хорошо, за pix0r, Искры и Dave отвечает, что есть три способа сделать это:
NameVirtualHost *:80
).Добавьте свой виртуальный хост (~ строка 36):
<VirtualHost *:80>
DocumentRoot C:\Projects\transitCalculator\trunk
ServerName transitcalculator.localhost
<Directory C:\Projects\transitCalculator\trunk>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Откройте файл хостов (C:\Windows\System32\drivers\etc\hosts).
Добавить
127.0.0.1 transitcalculator.localhost #transitCalculator
до конца файла (до использования Spybot - Search and Destroy, если у вас установлено это).
Теперь вы можете получить доступ к этому каталогу, просмотрев http://transitcalculator.localhost/.
Запустив строку 200 вашего файла http.conf
, скопируйте все между <Directory "C:/xampp/htdocs">
и </Directory>
(~ строка 232) и вставьте его сразу же с заменой C:/xampp/htdocs
на нужный каталог (в этом случае C:/Projects
), чтобы предоставить вашему серверу правильные разрешения для нового каталога.
Найдите раздел <IfModule alias_module></IfModule>
(~ строка 300) и добавьте
Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
(или что-то, что имеет отношение к вашим желаниям) ниже блока комментариев Alias
, внутри тегов модуля.
Изменить ~ строку 176 в C:\xampp\apache\conf\httpd.conf; измените DocumentRoot "C:/xampp/htdocs"
на #DocumentRoot "C:/Projects"
(или что угодно).
Измените ~ строку 203, чтобы соответствовать вашему новому местоположению (в данном случае C:/Projects
).
Примечания:
Вы можете переместить его, отредактировав параметр DocumentRoot в XAMPP\apache\conf\httpd.conf.
В настоящее время он должен быть:
C:/XAMPP/HTDOCS
Измените его на:
C:/проектов/transitCalculator/багажник
VirtualHost также будет работать для этого и может работать лучше для вас, поскольку вы можете разместить несколько проектов без необходимости в подкаталогах. Вот как вы это делаете:
httpd.conf(или extra\httpd-vhosts.conf относительно httpd.conf. Принудительная косая черта "\" может привести к ее неработоспособности):
NameVirtualHost *:80
# ...
<VirtualHost *:80>
DocumentRoot C:\projects\transitCalculator\trunk\
ServerName transitcalculator.localhost
<Directory C:\projects\transitCalculator\trunk\>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
HOSTS файл (c:\windows\system32\drivers\etc\hosts обычно):
# localhost entries
127.0.0.1 localhost transitcalculator.localhost
Теперь перезапустите XAMPP, и вы сможете получить доступ к http://transitcalculator.localhost/, и он будет отображаться прямо в этот каталог.
Это может быть полезно, если вы пытаетесь реплицировать производственную среду, в которой вы разрабатываете сайт, который будет размещаться в корне имени домена. Например, вы можете указать файлы с абсолютными путями, которые будут переноситься на сервер:
<img src="/images/logo.png" alt="My Logo" />
тогда как в среде с использованием псевдонимов или подкаталогов вам нужно будет отслеживать, где именно каталог "images" относился к текущему файлу.
X:\myfolder
). Когда я использую этот метод, я получаю предупреждение «Доступ запрещен». Означает ли это, что пользователь Apache не имеет доступа для чтения к диску?
Directory
заменить Order allow,deny
и Allow from all
с Require all granted
. См. Stackoverflow.com/questions/9110179/…
Вы можете настроить Apache для обслуживания страниц из любого места с любыми ограничениями, но обычно он распространяется в более безопасной форме.
Редактирование файлов apache (http.conf является одним из наиболее распространенных имен) позволит вам установить любую папку, чтобы она отображалась на вашем веб-сайте.
EDIT:
alias myapp c:\myapp\
Я отредактировал свой ответ, чтобы включить формат для создания псевдонима в файле http.conf, который похож на ярлык в окнах или символическую ссылку в un * x, где Apache "притворяется", что папка находится в webroot, Вероятно, это будет более полезно для вас в долгосрочной перспективе.
В качестве побочного примечания, если вы пытаетесь заставить XAMPP использовать сетевой диск в качестве корня вашего документа, вам нужно использовать UNC-пути в httpd.conf. XAMPP не распознает подключенные сетевые диски.
Например, следующее не будет работать, DocumentRoot "X:/webroot"
Но это будет, DocumentRoot "//192.168.10.100/webroot" (обратите внимание на косые черты, а не на обратные косые черты)
Ни одно из этих решений не работало легко. Вот простейшее решение, позволяющее Apache 2 размещать веб-сайты вне htdocs:
Под директивой "DocumentRoot" в httpd.conf вы должны увидеть блок каталога. Замените этот блок каталога:
<Directory />
Options FollowSymLinks
AllowOverride All
Allow from all
</Directory>
ПОМНИТЕ, ЧТОБЫ НЕ ИСПОЛЬЗОВАТЬ ЭТУ КОНФИГУРАЦИЮ В РЕАЛЬНОЙ ОКРУЖАЮЩЕЙ СРЕДЕ