cómo crear un host virtual en XAMPP


82

Estoy seguro de que esta pregunta se hace muchas veces, pero no me encuentro con ningún problema. Estoy usando XAMPP donde configuro el marco Zend.

XAMPP se está ejecutando en el puerto 8081 ya que 80 está siendo ocupado por algún proceso de Windows.Necesito usar un host virtual para eso lo configuro con el siguiente código en C:/xampp/apache/config/extra/httpd-vhosts.config(o C:/xampp/apache/conf/extra/httpd-vhosts.confen versiones más recientes).

<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>    

y también actualice el archivo de hosts con 127.0.0.1 comm-app.locale intente reiniciar Apache, pero muestra un error.

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 no debería ser VirtualHost *: 8081 si ahí es donde se ejecuta Apache
TommyBs

4
El proceso de Windows que ocupa el puerto 80 podría ser Skype.
Marek

Respuestas:


70

Veo dos errores:

<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> 

Versión fija:

<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>

Una cosa para mencionar:

Siempre puedes probar y ejecutar el comando:

service apache2 configtest

Esto le dirá cuándo tiene una configuración mal formada y tal vez incluso pueda decirle dónde está el problema.

Además, ayuda a evitar la indisponibilidad en un sistema LIVE:

service apache2 restart

se apagará y luego no se iniciará, esta prueba de configuración que conoce de antemano "oops, hice algo mal, debería arreglar esto primero" pero el apache todavía se está ejecutando con la configuración anterior. :)


Apache comienza a ejecutarse después de estas correcciones, pero comm-app.local aún no se encuentra en el servidor y muestra el error HTTP 404. No se encuentra el recurso solicitado.
Paras Arora

¿Ha configurado comm-app.local para redirigir a 127.0.0.1 en su archivo de hosts? ¿Y estás seguro de que tu camino es el correcto? Ah, y por supuesto, tienes que cerrar el contenedor VirtualHost si no lo hiciste ... (
Actualicé

1
sí, solo coloco 127.0.0.1 comm-app.local en el archivo de hosts e incluso reinicio el servidor
Paras Arora

¿Y ha introducido comm-app.local: 8081 en el navegador? (¿Olvidó el puerto tal vez)? Recuerde reiniciar su apache después de cambiar config. Sin embargo, si esto aún no funciona, algo más está mal en su archivo de configuración ...
Steini

¡Hola! Steini. Estoy experimentando el mismo problema. ¿Hay alguna forma de evitar escribir port no después del nombre de host virtual? Gracias de antemano
karim_fci

62

Paso 1) C: \ WINDOWS \ system32 \ drivers \ etc \ Abra el archivo "hosts":

127.0.0.1       localhost
127.0.0.1       test.com
127.0.0.1       example.com

Paso 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>

Paso 3) C: \ xampp \ apache \ conf \ httpd.conf. Desplácese hacia abajo hasta la sección Configuración complementaria al final y ubique la siguiente sección (alrededor de la línea 500), elimine el # del principio de la segunda línea para que la sección se vea así:

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

Paso 4) Reinicie XAMPP y ahora ejecútelo en su navegador:

www.example.com or www.test.com

1
Hola amit ... El mío sorprendentemente no funciona .... Las únicas diferencias en mi configuración son: 127.0.0.4 mycustomdomainy se ejecuta en el puerto 90, así que usé <VirtualHost 127.0.0.4:90>. Falla cuando lo intento en el navegadorhttp://mycustomdomain
Jason Krs

8

Agregue este código en 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>

Ahora agregue su nombre de host virtual en el siguiente archivo.

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

127.0.0.1 qa-staging.com

Si no puede guardar este código en el archivo host, haga clic con el botón derecho en notpad, seleccione Ejecutar como administrador y luego podrá guardar su código personalizado ahora reinicie su XAMP


7

Escriba estos códigos al final del archivo 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

entre la etiqueta de host virtual.

y edite el archivo System32 / Drivers / etc / hosts use el bloc de notas como administrador

agregar la parte inferior del archivo

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>

Guarde el archivo de configuración de Apache.

para obtener información detallada, consulte este


4

Simplemente cambie el puerto 8081y el siguiente host virtual funcionará:

<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>

Eso es un error, sí, pero esto no evitaría que se inicie el servicio de apache, esto simplemente arrojaría una advertencia y el vhost no funcionaría
Steini

Apache comienza a ejecutarse después de estas correcciones, pero comm-app.local aún no se encuentra en el servidor y muestra el error HTTP 404. No se encuentra el recurso solicitado.
Paras Arora

3

En su unidad de disco: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf existe un ejemplo y puede editarlo con su configuración:

 ##<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>

Sería así, como ejemplo y no olvide agregar VirtualHost para que el propio localhost tenga la posibilidad de ejecutar phpmyadmin y otro proyecto al mismo tiempo en el puerto 80, como ejemplo que mostraré con el proyecto 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>

luego, como se mencionó anteriormente, debe agregar: C: \ windows \ system32 \ drivers \ hosts al final del archivo

127.0.0.1    store.local
127.0.0.1    www.store.local

reinicie Apache e intente en el navegador:

store.local or www.store.local

tal vez la primera vez debas agregar así:

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

para usar otros puertos, debe agregar lo siguiente, antes de su VirtualHost:

Listen 8081 or another which you prefer

luego simplemente use el puerto para su VirtualHost así:

<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>

luego reinicie Apache e intente en el navegador

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

y solo el proyecto para el que agregue el puerto se ejecutará en este puerto, por ejemplo, otros proyectos y phpmyadmin seguirán ejecutándose en el puerto 80


2

Documentación de Apache Virtual Host La configuración de un host virtual (vhost) proporciona varios beneficios:

  • Los hosts virtuales hacen que las URL sean más limpias: localhost / mysite vs mysite.local.
  • Los hosts virtuales facilitan los permisos: restrinja el acceso a un solo host virtual en una red local en lugar de permitir el acceso a todos los sitios de su red local.
  • Algunas aplicaciones requieren un "." en la URL (ejem Magento). Si bien puede configurar localhost.com/mysite editando el archivo de hosts de Windows, crear un vhost es una mejor solución.

Directiva VirtualHost Contiene directivas que se aplican solo a un nombre de host o dirección IP específicos

Directiva de ubicación Aplica las directivas adjuntas solo a las URL coincidentes

Cambios de ejemplo sobre el archivo de configuración -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>

Actualice su archivo de hosts de Windows «Abra su archivo de hosts de Windows ubicado en 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 =====

@ver


1

Lo arreglé usando la siguiente configuración.

 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

Llego un poco tarde a la fiesta, pero escribí este pequeño script bash para Mac que crea un VirtualHost a través de la terminal:

#!/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

Estoy seguro de que se pueden hacer algunas mejoras, y solo tiene las dos opciones requeridas para el servidor virtual (nombre del servidor y raíz del documento), pero hace el trabajo de manera mucho más rápida y eficiente que abrir y editar todos los archivos. manualmente, y también reinicia automáticamente XAMPP después.

Esto supone que tiene la ubicación de instalación predeterminada para XAMPP, que se puede cambiar.


0

Paso 1) Abra el archivo de host en "C: \ Windows \ System32 \ drivers \ etc"

Añadir

127.0.0.1  vipsnum.mk

Paso 2) Abra el archivo httpd-vhosts.conf en "C: \ xampp \ apache \ conf \ extra"

Añadir

<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

El problema con xampp en mi caso es cuando se especifica una carpeta diferente a la de htdocs, especialmente con múltiples dominios y carpetas dedicadas. Esto se debe a httpd-ssl.confque también se hace referencia <VirtualHost>.

Para hacer esto remueva la <VirtualHost>entrada completa debajohttpd-ssl.conf

A partir de ahí, cualquier configuración que realice en su httpd-vhosts.confse actualizará como se esperaba tanto httpcomo httpsreferencias.


0

He estado buscando la solución durante bastante tiempo. Y finalmente tengo la respuesta. Si su host virtual no funciona en su Windows 10 o 7, etc., es debido a este nuevo bombo de https, donde todos los sitios se enrutan a https.

XAMPP sigue la misma tendencia, por lo que arreglar los hosts virtuales, el archivo de hosts, etc.no es suficiente, debido a la estricta redirección https. Aquí está la solución completa.

Mi sitio deseado se encuentra en D: \ xampp \ htdocs \ ikeen.

1) Agregue esto a su 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) Agregue esto al final de httpd.conf:

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

3) Agregue esta línea a su archivo de hosts en el directorio de Windows

127.0.0.1      ikeen.localhost

4) El paso final es cambiar la sección VirtualHost de su archivo httpd-ssl.conf a la siguiente

<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"

Reinicie y sea feliz :)


-1

Agregué la siguiente configuración a httpd.conf y reinicié el servicio lampp y comenzó a funcionar. Gracias a todas las publicaciones anteriores, que me ayudaron a resolver los problemas uno por uno.

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

Simple, puede ver la plantilla a continuación y usarla en consecuencia. Es muy común crear un host virtual y muy simple. Seguramente la siguiente plantilla funcionará.

<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>

También para obtener más información sobre el host virtual, visite este sitio. http://www.thegeekstuff.com/2011/07/apache-virtual-host

Gracias,

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.