Сведения о вопросе

HOLY

16:03, 1st July, 2020

Теги

Сделать XAMPP/Apache служить файл вне htdocs в

Просмотров: 624   Ответов: 6

Можно ли настроить xampp для обслуживания файла вне каталога htdocs ?

Например, предположим, что у меня есть файл, расположенный следующим образом:

C:\projects\transitCalculator\trunk\TransitCalculator.php

и мой xampp файлов, как правило, подается из:

C:\xampp\htdocs\

(потому что это конфигурация по умолчанию) есть ли какой-то способ заставить Apache распознавать и обслуживать мой файл TransitCalculator.php , не перемещая его под htdocs ? Предпочтительно я хотел бы, чтобы Apache обслуживал/имел доступ ко всему содержимому каталога проектов, и я не хочу перемещать каталог проектов под htdocs .

Редактировать: Редактировать, чтобы добавить Apache на заголовок вопроса, чтобы сделать в более "searchable"



  Сведения об ответе

baggs

18:03, 1st July, 2020

Хорошо, в соответствии с ответами pix0r, Sparks и Dave, похоже, есть три способа сделать это:


виртуальный хост

  1. Открой C:\xampp\apache\conf\extra\httpd-vhosts.conf.
  2. Un-comment ~line 19 ( NameVirtualHost *:80).
  3. Добавьте свой виртуальный хост (~строка 36):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  4. Откройте файл hosts (C:\Windows\System32\drivers\etc\hosts).

  5. Добавь

    127.0.0.1 transitcalculator.localhost #transitCalculator
    

    до конца файла (перед Spybot-Search & уничтожьте материал, если он у вас установлен).

  6. Сохранить (возможно, вам придется сохранить его на рабочем столе, изменить права доступа к старому файлу hosts (щелкните правой кнопкой мыши > Свойства) и скопировать новый файл в каталог поверх старого (или переименовать старый), если вы используете Vista и возникли проблемы).
  7. Перезагрузка Apache.

Теперь вы можете получить доступ к этому каталогу, перейдя в http://transitcalculator.localhost/ .


Сделать псевдоним

  1. Начиная с ~line 200 вашего файла http.conf , скопируйте все, что находится между <Directory "C:/xampp/htdocs"> и </Directory> (~строка 232), и вставьте его сразу же ниже, заменив C:/xampp/htdocs на нужный каталог (в данном случае C:/Projects), чтобы дать вашему серверу правильные разрешения для нового каталога.

  2. Найдите раздел <IfModule alias_module></IfModule> (~строка 300) и добавьте

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
    

    (или все, что имеет отношение к вашим желаниям) под блоком комментариев Alias , внутри тегов модуля.


Измените корень документа

  1. Отредактируйте ~line 176 в C:\xampp\apache\conf\httpd.conf; измените DocumentRoot "C:/xampp/htdocs" на #DocumentRoot "C:/Projects" (или что вы хотите).

  2. Отредактируйте ~line 203 в соответствии с вашим новым местоположением (в данном случае C:/Projects ).


Записи :

  • Вы должны использовать прямые косые черты " / "вместо обратных косых черт"\".
  • Не включайте trailing " / " в конце.
  • перезагрузите ваш сервер .

  Сведения об ответе

repe

18:03, 1st July, 2020

Вы можете переместить его, изменив параметр DocumentRoot в XAMPP\apache\conf\httpd.conf.

В настоящее время он должен быть:

C:/xampp/htdocs

Измените его на:

C:/projects/transitCalculator/trunk


  Сведения об ответе

#hash

18:03, 1st July, 2020

A VirtualHost также будет работать для этого и может работать лучше для вас, поскольку вы можете разместить несколько проектов без необходимости в подкаталогах. Вот как вы это делаете:

httpd.conf (или extra\httpd-vhosts.conf относительно httpd.conf. Trailing косые черты " \ " может привести к тому, что он не будет работать):

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" относительно текущего файла.


  Сведения об ответе

piter

18:03, 1st July, 2020

Вы можете установить Apache для обслуживания страниц из любого места с любыми ограничениями, но обычно он распространяется в более защищенной форме.

Редактирование ваших файлов apache (http.conf - одно из наиболее распространенных имен) позволит вам настроить любую папку так, чтобы она отображалась в вашем webroot.

EDIT:

псевдоним приложение c:\myapp\

Я отредактировал свой ответ, чтобы включить формат для создания псевдонима в файле http.conf, который похож на ярлык в windows или символическую ссылку под un*x, где Apache 'pretends' папка находится в webroot. Это, вероятно, будет более полезным для вас в долгосрочной перспективе.


  Сведения об ответе

repe

18:03, 1st July, 2020

Если вы пытаетесь заставить XAMPP использовать сетевой диск в качестве корневого каталога документа, вам нужно использовать UNC путь в httpd.conf. XAMPP не распознает подключенные сетевые диски.

Например следующее не будет работать, DocumentRoot "X:/webroot"

Но это будет, DocumentRoot "//192.168.10.100/webroot" (обратите внимание на косые черты вперед, а не назад)


  Сведения об ответе

lats

18:03, 1st July, 2020

Решение, позволяющее Apache 2 размещать веб-сайты за пределами htdocs:

Под директивой "DocumentRoot" в httpd.conf вы должны увидеть блок каталогов. Замените этот блок каталога на:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

НЕ ЗАБЫВАЙТЕ ИСПОЛЬЗОВАТЬ ЭТУ КОНФИГУРАЦИЮ В РЕАЛЬНОЙ СРЕДЕ


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться