як створити віртуальний хост на XAMPP


83

Я впевнений, що це питання задають багато разів, але я не стикаюся з проблемою. Я використовую XAMPP, де я налаштовую фреймворк Zend.

XAMPP працює на порту 8081, оскільки 80 займає якийсь процес Windows. Мені потрібно використовувати віртуальний хост, який я налаштовую з наступним кодом у C:/xampp/apache/config/extra/httpd-vhosts.config(або C:/xampp/apache/conf/extra/httpd-vhosts.confв нових версіях).

<VirtualHost *:80>
ServerName comm-app.local
DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public"
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>    

а також оновити файл hosts за допомогою 127.0.0.1 comm-app.localі спробувати перезапустити apache, але він відображає помилку.

15:03:01  [Apache]  Error: Apache shutdown unexpectedly.
15:03:01  [Apache]  This may be due to a blocked port, missing dependencies, 
15:03:01  [Apache]  improper privileges, a crash, or a shutdown by another method.
15:03:01  [Apache]  Press the Logs button to view error logs and check
15:03:01  [Apache]  the Windows Event Viewer for more clues
15:03:01  [Apache]  If you need more help, copy and post this
15:03:01  [Apache]  entire log window on the forums

2
Не повинен VirtualHost *: 80 бути VirtualHost *: 8081, якщо тут працює Apache
TommyBs

4
Процес Windows, який займає порт 80, може бути Skype.
Марек

Відповіді:


70

Я бачу дві помилки:

<VirtualHost *:80> -> Fix to :8081, your POrt the server runs on
    ServerName comm-app.local
    DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public" -> This is probably why it crashes, missing >
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
 -> MIssing close container: </VirtualHost> 

Виправлена ​​версія:

<VirtualHost *:8081>
    ServerName comm-app.local
    DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Зазначимо одне:

Ви завжди можете спробувати запустити команду:

service apache2 configtest

Це покаже вам, коли у вас неправильно сформована конфігурація, і, можливо, навіть може сказати, де проблема.

Крім того, це допомагає уникнути недоступності в системі LIVE:

service apache2 restart

вимкнеться, а потім не вдасться запустити, цей конфіст, який ви знаєте заздалегідь "на жаль, я зробив щось не так, я повинен це виправити спочатку", але сам apache все ще працює зі старою конфігурацією. :)


Apache починає працювати після цих виправлень, але comm-app.local все ще не знайдений на сервері з помилкою HTTP-помилка 404. Запитаний ресурс не знайдено.
Paras Arora

Ви налаштували comm-app.local для переспрямування на 127.0.0.1 у файлі хостів? І ви впевнені, що ваш шлях правильний? О, і звичайно, вам доведеться закрити контейнер VirtualHost, якщо ви цього не зробили ... (Оновлено моє повідомлення)
Steini

1
так, я просто розміщую 127.0.0.1 comm-app.local у файлі hosts і навіть перезапускаю сервер
Paras Arora

І ви ввели в браузері comm-app.local: 8081? (Забули порт, можливо)? Пам'ятайте, щоб перезапустити ваш апаш після зміни конфігурації. Однак якщо це все одно не спрацює, щось інше не так у вашому конфігураційному файлі ...
Steini

Привіт! Штейні. Я маю таку ж проблему. Чи є спосіб уникнути введення порту no після імені віртуального хосту. Заздалегідь
дякую

65

Крок 1) C: \ WINDOWS \ system32 \ drivers \ etc \ Відкрийте файл "hosts":

127.0.0.1       localhost
127.0.0.1       test.com
127.0.0.1       example.com

Крок 2) xampp \ apache \ conf \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/test/
    ServerName www.test.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/example/
    ServerName www.example.com
</VirtualHost>

Крок 3) C: \ xampp \ apache \ conf \ httpd.conf. Прокрутіть униз до розділу Додаткова конфігурація в кінці та знайдіть наступний розділ (навколо рядка 500), Видаліть # з початку другого рядка, щоб розділ тепер виглядав так:

#Virtual hosts
Include conf/extra/httpd-vhosts.conf

Крок 4) Перезапустіть XAMPP і запустіть у своєму браузері:

www.example.com or www.test.com

1
Ей amit ... Мій напрочуд не працює .... Єдині відмінності в моїх налаштуваннях: 127.0.0.4 mycustomdomainі він працює на порту 90, тому я використовував <VirtualHost 127.0.0.4:90>. Це не вдається, коли я намагаюся в браузеріhttp://mycustomdomain
Jason Krs

8

Додайте цей код у C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName qa-staging.com
ServerAlias www.qa-staging.com
<Directory "c:/xampp/htdocs">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Тепер додайте ім’я віртуального хосту у файл нижче.

C:\Windows\System32\drivers\etc\hosts

127.0.0.1 qa-staging.com

Якщо ви не можете зберегти цей код у хост-файлі, клацніть правою кнопкою миші на notpad, виберіть Запуск від імені адміністратора, і тоді ви зможете зберегти свій власний код, тепер перезапустіть XAMP


7

Запишіть ці коди в кінці файлу C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf,

DocumentRoot "D:/xampp/htdocs/foldername"
ServerName www.siteurl.com
ServerAlias www.siteurl.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common

між тегом віртуального хоста.

та відредагуйте файл System32 / Drivers / etc / hosts використовуйте блокнот як адміністратор

додати нижню частину файлу

127.0.0.1    www.siteurl.com

4
<VirtualHost *:80>
    DocumentRoot "D:/projects/yourdirectry name"
    ServerName local.yourdomain.com
    <Directory "D:/projects/yourdirectry name">
        Require all granted 
    </Directory>
</VirtualHost>

Збережіть файл конфігурації Apache.

для отримання детальної інформації зверніться до цього


4

Просто змініть порт на 8081і наступний віртуальний хост буде працювати:

<VirtualHost *:8081>
ServerName comm-app.local
DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Це помилкова помилка, але це не завадить запустити службу Apache, це просто
видасть

Apache починає працювати після цих виправлень, але comm-app.local все ще не знайдений на сервері з помилкою HTTP-помилка 404 .
Paras Arora

3

На вашому дисководі: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf існує приклад, і ви можете редагувати його за допомогою своєї конфігурації:

 ##<VirtualHost *:80>
 ##ServerAdmin webmaster@dummy-host.example.com
 ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
 ##ServerName dummy-host.example.com
 ##ServerAlias www.dummy-host.example.com
 ##ErrorLog "logs/dummy-host.example.com-error.log"
 ##CustomLog "logs/dummy-host.example.com-access.log" common
 ##</VirtualHost>

Це було б так, як приклад, і не забудьте додати VirtualHost для самого localhost, щоб мати можливість запускати phpmyadmin та інші проекти одночасно на порту 80, як приклад, який я покажу з проектом store.local :

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@store.local
DocumentRoot "c:/xampp/htdocs/store.local/public"
ServerName www.store.local
ServerAlias store.local
<Directory C:/xampp/htdocs/store.local>
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

тоді, як згадувалося вище, ви повинні додати в: C: \ windows \ system32 \ drivers \ hosts внизу файлу

127.0.0.1    store.local
127.0.0.1    www.store.local

перезапустіть Apache і спробуйте у браузері:

store.local or www.store.local

можливо, в перший раз вам потрібно додати так:

http://store.local or http://www.store.local

щоб використовувати інші порти, перед VirtualHost потрібно додати наступне:

Listen 8081 or another which you prefer

тоді просто використовуйте порт для вашого VirtualHost так:

<VirtualHost *:8081>
ServerAdmin webmaster@store.local
DocumentRoot "c:/xampp/htdocs/store.local/public"
ServerName store.local
ServerAlias www.store.local
<Directory C:/xampp/htdocs/store.local>
    AllowOverride All
    Require all granted
</Directory>

потім перезапустіть Apache і спробуйте в браузері

store.local:8081 or www.store.local:8081

і лише проект, для якого ви додаєте порт, буде працювати на цьому порту, наприклад, інші проекти та phpmyadmin все ще будуть працювати на порту 80


2

Документація про віртуальний хост Apache Налаштування віртуального хосту (vhost) забезпечує кілька переваг:

  • Віртуальні хости роблять URL-адреси чистішими - localhost / mysite проти mysite.local.
  • Віртуальні хости спрощують дозволи - обмежують доступ для одного vhost у локальній мережі проти дозволу доступу до всіх сайтів у вашій локальній мережі.
  • Деякі програми вимагають "." в URL-адресі (ahem Magento). Хоча ви можете налаштувати localhost.com/mysite, редагуючи файл хостів Windows, кращим рішенням є створення vhost.

Директива VirtualHost Містить директиви, які застосовуються лише до певного імені хосту або IP-адреси

Директива про місцезнаходження Застосовує вкладені директиви лише до відповідних URL-адрес

Приклад змін у файлі конфігурації -D:\xampp\apache\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin localhost
    DocumentRoot "D:/xampp/htdocs"
    ServerName localhost
</VirtualHost>

<VirtualHost localhost:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  #DocumentRoot "D:\xampp\htdocs\phpPages"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>

# To get view of PHP application in the Browser.
<VirtualHost *:80>
    ServerAdmin postmaster@dummy-host.localhost
    DocumentRoot "D:\xampp\htdocs\app1"
    ServerName app1.yash.com
    ServerAlias app1.yash.com
    ErrorLog "logs/app1.yash.com-error.log"
    CustomLog "logs/app1.yash.com-access.log" combined
    
    # App1 communication proxy call to Java War applications from XAMP
    <Location /ServletApp1>
            ProxyPass  http://app1.yashJava.com:8080/ServletApp1
            ProxyPassReverse  http://app1.yashJava.com:8080/ServletApp1
            Order Allow,Deny
            Allow from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin postmaster@infotreesolutions.com
    DocumentRoot "D:\xampp\htdocs\app2"
    ServerName app2.yash.com
    ErrorLog "logs/app2.yash.com-error.log"
    CustomLog "logs/app2.yash.com-access.log" combined
    
    # App1 communication proxy call to Java War applications from XAMP
    <Location /ServletApp2>
            ProxyPass  http://app1.yashJava.com:8080/ServletApp2
            ProxyPassReverse  http://app1.yashJava.com:8080/ServletApp2
            Order Allow,Deny
            Allow from all
    </Location>
</VirtualHost>

Оновіть файл хостів Windows «Відкрийте файл хостів Windows, який знаходиться в C:\Windows\System32\drivers\etc\hosts.

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

127.0.0.1       test.com
127.0.0.1       example.com
127.0.0.1       myssl.yash.com

D:\xampp\apache\conf\httpd.conf, [httpd-ssl.conf](http://httpd.apache.org/docs/2.2/mod/mod_ssl.html)

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost> directive.
# Listen 0.0.0.0:80 | [::]:80
Listen 80

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule speling_module modules/mod_speling.so

# ServerAdmin: Your address, where problems with the server should be e-mailed.
# This address appears on some server-generated pages, such as error documents.
#  e.g. admin@your-domain.com
ServerAdmin postmaster@localhost
ServerName localhost:80
DocumentRoot "D:/xampp/htdocs"

<Directory "D:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"

# ===== httpd-ssl.conf - SSL Virtual Host Context =====
# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two
#       Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"
Listen 443
## SSL Virtual Host Context
<VirtualHost _default_:443>
    DocumentRoot "D:\xampp\htdocs\projectFolderSSL"
    ServerName myssl.yash.com:443
    ServerAlias myssl.yash.com:443
        
    ServerAdmin webmaster@localhost
    ErrorLog "logs/error.log"
    <IfModule log_config_module>
        CustomLog "logs/access.log" combined
    </IfModule>
    
    ## Redirecting URL from Web server to Application server over different machine.
    # myssl.yash.com:443/ServletWebApp
    <Location /path>
        ProxyPass  http://java.yash2.com:8444/ServletWebApp
        ProxyPassReverse  http://java.yash2.com:8444/ServletWebApp
        Order Allow,Deny
        Allow from all
    </Location>
    
    #SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateFile "D:\SSL_Vendor\yash.crt"
    
    #SSLCertificateKeyFile "conf/ssl.key/server.key"
    SSLCertificateKeyFile "D:\SSL_Vendor\private-key.key"
    
    #SSLCertificateChainFile "conf/ssl.crt/server-ca.crt"
    SSLCertificateChainFile "D:\SSL_Vendor\intermediate.crt"
</VirtualHost>
# ===== httpd-ssl.conf - SSL Virtual Host Context =====

@подивитися


1

Я виправив це за допомогою наступної конфігурації.

 Listen 85
 <VirtualHost *:85>
           DocumentRoot "C:/xampp/htdocs/LaraBlog/public"
           <Directory "C:/xampp/htdocs/CommunicationApp/public">
           DirectoryIndex index.php
           AllowOverride All
           Order allow,deny
           Allow from all
           </Directory>
 </VirtualHost>

0

Я трохи запізнився на вечірку, але я написав цей маленький скрипт bash для Mac, який створює VirtualHost через термінал:

#!/bin/bash

echo "Welcome to the VirtualHostCreator! Press <RETURN> to continue."

read

echo "Enter the name the VirtualHost you would like to create. No spaces or dashes, please."

read hostname

echo "Enter the document root of the VirtualHost."

read doc_root

echo "Creating VirtualHost \"$hostname\". You may be prompted for your password."

hosts_file="/etc/hosts"
vhosts_file="/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf"
restart_command="sudo /Applications/XAMPP/xamppfiles/xampp restart"

cat >> $vhosts_file << EndOfMessage
<VirtualHost ${hostname}>
    ServerName ${hostname}
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/${doc_root}"
</VirtualHost>
EndOfMessage

sudo sh -c "echo \"127.0.0.1       $hostname\" >> $hosts_file"

$restart_command

Я впевнений, що можна зробити кілька вдосконалень, і він має лише два обов’язкові параметри для vhost (ім’я сервера та корінь документа), але це робить роботу набагато швидше та ефективніше, ніж відкриття та редагування всіх файлів вручну, а також автоматично перезапускає XAMPP згодом.

Це передбачає, що у вас є місце встановлення за замовчуванням для XAMPP, яке все можна змінити.


0

Крок 1) Відкрийте файл хосту в розділі "C: \ Windows \ System32 \ drivers \ etc"

Додати

127.0.0.1  vipsnum.mk

Крок 2) Відкрийте файл httpd-vhosts.conf у розділі "C: \ xampp \ apache \ conf \ extra"

Додати

<VirtualHost vipsnum.mk:80>
    ServerName vipsnum.mk
    DocumentRoot "C:/xampp/htdocs/vipnum/"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/vipnum/">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost> 

0
1. C:\xampp\apache\conf\https.conf
Virtual hosts
Include conf/extra/httpd-vhosts.conf


2. C:\Windows\System32\drivers\etc\hosts
127.0.0.1       localhost
127.0.0.1       helpdesk.local


3. C:\xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/helpdesk/public"
    ServerName helpdesk.local
</VirtualHost>


Now, Restart Apache and go through the link. 
URL : http://helpdesk.local

0

Проблема з xampp у моєму випадку полягає в тому, що вказується інша папка, яка не використовується htdocs, особливо з кількома доменами та виділеними папками. Це тому, що httpd-ssl.confце також посилання <VirtualHost>.

Для цього виправити весь <VirtualHost>запис підhttpd-ssl.conf

Звідти будь-яке налаштування, яке ви зробите у своєму, httpd-vhosts.confбуде оновлюватися, як очікувалося, як httpі httpsпосилання.


0

Я досить довго шукав рішення. І нарешті я маю відповідь. Якщо ваш віртуальний хост не працює на вашому Windows 10 або 7 тощо, це через цей новий ажіотаж https, де всі сайти перенаправляються на https.

XAMPP слідує тій самій тенденції, тому виправлення віртуальних хостів, файлів хостів тощо не достатньо через суворе перенаправлення https. Ось повне рішення.

Мій бажаний сайт знаходиться за адресою D: \ xampp \ htdocs \ ikeen.

1) Додайте це до свого httpd-vhosts.conf:

<VirtualHost *:80>
     ServerName localhost
     DocumentRoot "D:\xampp\htdocs"
     <Directory "D:\xampp\htdocs">
         DirectoryIndex index.php
     </Directory>
 </VirtualHost>

<VirtualHost *:80>
     ServerName ikeen.localhost
     DocumentRoot "D:\xampp\htdocs\ikeen"
     SetEnv APPLICATION_ENV "development"
     <Directory "D:\xampp\htdocs\ikeen">
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all        
     </Directory>
 </VirtualHost>

2) Додайте це в кінець httpd.conf:

<Directory />
    AllowOverride none
    Require all granted
</Directory>

3) Додайте цей рядок до файлу хостів у каталозі Windows

127.0.0.1      ikeen.localhost

4) Останній крок - змінити розділ VirtualHost у вашому файлі httpd-ssl.conf на такий

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "D:/xampp/htdocs"
#ServerName www.example.com:443
ServerName localhost
ServerAdmin admin@example.com
ErrorLog "D:/xampp/apache/logs/error.log"
TransferLog "D:/xampp/apache/logs/access.log"

#   General setup for the ikeen host
DocumentRoot "D:/xampp/htdocs/ikeen"
#ServerName www.example.com:443
ServerName ikeen.localhost
ServerAdmin admin@example.com
ErrorLog "D:/xampp/apache/logs/error.log"
TransferLog "D:/xampp/apache/logs/access.log"

Перезапустіть і будьте щасливі :)


-1

Я додав наведену нижче конфігурацію до httpd.conf і перезапустив службу lampp, і вона почала працювати. Дякую всім вищезазначеним дописам, які допомогли мені вирішувати питання по одному.

Listen 8080
<VirtualHost *:8080>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/opt/lampp/docs/dummy-host2.example.com"
    ServerName localhost:8080
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
    <Directory "/opt/lampp/docs/dummy-host2.example.com">
        Require all granted 
    </Directory>
</VirtualHost>

-1

Просто, Ви можете побачити наведений нижче шаблон і використовувати його відповідно. Дуже часто створювати віртуальний хост і дуже просто. Звичайно, нижче шаблон буде працювати.

<VirtualHost *:8081>
DocumentRoot "C:/xampp/htdocs/testsite"
ServerName testsite.loc
ServerAlias www.testsite.loc
<Directory "c:/xampp/htdocs/testsite">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Також, щоб отримати додаткові відомості про віртуальний хост, відвідайте цей сайт. http://www.thegeekstuff.com/2011/07/apache-virtual-host

Дякую,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.