как создать виртуальный хост на XAMPP


83

Я уверен, что этот вопрос задают много раз, но я не сталкивался с проблемой. Я использую XAMPP там, где настраиваю Zend framework.

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 по-прежнему не обнаруживается на сервере с сообщением об ошибке Not Found HTTP 404. Запрошенный ресурс не найден.
Paras Arora

Вы настроили comm-app.local для перенаправления на 127.0.0.1 в вашем файле hosts? И вы уверены, что ваш путь правильный? О, и, конечно же, вам нужно закрыть контейнер VirtualHost, если вы этого не
сделали

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

А вы ввели в браузере comm-app.local: 8081? (Возможно, забыл порт)? Не забудьте перезапустить apache после изменения config. Однако, если это все еще не работает, что-то еще не так в вашем конфигурационном файле ...
Steini

Привет! Steini. У меня такая же проблема. Есть ли способ избежать ввода номера порта после имени виртуального хоста. Заранее спасибо
karim_fci

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
открыть

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, это просто вызовет предупреждение, и
vhost

Apache начинает работать после этих исправлений, но comm-app.local по-прежнему не обнаруживается на сервере с сообщением об ошибке Not Found 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.
  • Виртуальные хосты упрощают разрешения - ограничивают доступ для одного виртуального хоста в локальной сети или разрешают доступ ко всем сайтам в вашей локальной сети.
  • Некоторым приложениям требуется "." в URL-адресе (кхм, Magento). Хотя вы можете настроить localhost.com/mysite, отредактировав файл хостов Windows, создание виртуального хоста - лучшее решение.

Директива 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) Добавьте эту строку в свой файл hosts в каталоге 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.