Aquí podría ser tu PUBLICIDAD


Hacer que XAMPP / Apache sirva archivo fuera de htdocs

votos
263

¿Es posible configurar xampp para que sirva un archivo fuera del htdocsdirectorio?

Por ejemplo, supongamos que tengo un archivo ubicado de la siguiente manera:

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

y mis archivos xampp normalmente se sirven desde:

C:\xampp\htdocs\

(porque esa es la configuración predeterminada) ¿Hay alguna forma de que Apache reconozca y entregue mi TransitCalculator.phparchivo sin moverlo htdocs? Preferiblemente me gustaría que Apache sirva / tenga acceso a todo el contenido del directorio de proyectos, y no quiero mover el directorio de proyectos htdocs.

edit: editado para agregar Apache al título de la pregunta para hacer que Q / A sea más buscable

Publicado el 04/08/2008 a las 17:54
fuente por usuario cmcculloh
En otros idiomas...        العربية       

6 respuestas

votos
324

Ok, por pix0r , las respuestas de Sparks y Dave parece que hay tres formas de hacer esto:


Hosts Virtuales

  1. Abra C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf.
  2. Dejar de comentar línea 19 ( NameVirtualHost *:80).
  3. Agregue su host virtual (~ línea 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. Abra su archivo de hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Añadir

    127.0.0.1 transitcalculator.localhost #transitCalculator
    

    hasta el final del archivo (antes del Spybot - Buscar y destruir cosas si tienes eso instalado).

  6. Guardar (Puede que tenga que guardarlo en el escritorio, cambiar los permisos en el archivo de hosts anterior (clic con el botón derecho> propiedades) y copiar el nuevo en el directorio sobre el anterior (o cambiar el nombre del anterior) si está utilizando Vista y tiene problemas).
  7. Reinicie Apache.

Ahora puede acceder a ese directorio navegando a http: //transitcalculator.localhost/ .


Hacer un alias

  1. Comenzando ~ línea 200 de su http.confarchivo, copie todo entre <Directory "C:/xampp/htdocs">y </Directory>(~ línea 232) y péguelo inmediatamente debajo con C:/xampp/htdocsreemplazado con su directorio deseado (en este caso C:/Projects) para darle a su servidor los permisos correctos para el nuevo directorio.

  2. Encuentre la <IfModule alias_module></IfModule>sección (~ línea 300) y agregue

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

    (o lo que sea relevante para sus deseos) debajo del Aliasbloque de comentarios, dentro de las etiquetas del módulo.


Cambia la raíz de tu documento

  1. Editar ~ línea 176 en C: \ xampp \ apache \ conf \ httpd.conf; cambiar DocumentRoot "C:/xampp/htdocs"a #DocumentRoot "C:/Projects"(o lo que quieras).

  2. Edite ~ línea 203 para que coincida con su nueva ubicación (en este caso C:/Projects).


Notas:

  • Tienes que usar barras diagonales "/" en lugar de barras diagonales "\".
  • No incluya el final "/" al final.
  • reinicia tu servidor .
Respondida el 04/08/2008 a las 06:05
fuente por usuario cmcculloh


Aquí podría ser tu PUBLICIDAD


votos
90

Puede reubicarlo editando la configuración de DocumentRoot en XAMPP \ apache \ conf \ httpd.conf.

En este momento debería ser:

C: / xampp / htdocs

Cambiarlo a:

C: / projects / transitCalculator / trunk

Respondida el 04/08/2008 a las 06:00
fuente por usuario Dave Ward

votos
49

Un VirtualHost también funcionaría para esto y podría funcionar mejor para usted ya que puede alojar varios proyectos sin la necesidad de subdirectorios. Así es como lo haces:

httpd.conf (o extra \ httpd-vhosts.conf relativo a httpd.conf. Las barras inclinadas "\" pueden hacer que no funcione):

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> 

Archivo HOSTS (c: \ windows \ system32 \ drivers \ etc \ hosts por lo general):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Ahora reinicie XAMPP y debería poder acceder a http: //transitcalculator.localhost/ y se asignará directamente a ese directorio.

Esto puede ser útil si intenta replicar un entorno de producción en el que está desarrollando un sitio que se ubicará en la raíz de un nombre de dominio. Puede, por ejemplo, señalar archivos con rutas absolutas que se transferirán al servidor:

<img src="/images/logo.png" alt="My Logo" />

mientras que en un entorno que utiliza alias o subdirectorios, necesita realizar un seguimiento de exactamente dónde estaba el directorio "imágenes" en relación con el archivo actual.

Respondida el 05/08/2008 a las 04:30
fuente por usuario pix0r

votos
14

Puede configurar Apache para que sirva páginas desde cualquier lugar con cualquier restricción, pero normalmente se distribuye de forma más segura.

Editar sus archivos de Apache (http.conf es uno de los nombres más comunes) le permitirá configurar cualquier carpeta para que aparezca en su webroot.

EDITAR:

alias myapp c: \ myapp \

He editado mi respuesta para incluir el formato para crear un alias en el archivo http.conf que es como un acceso directo en Windows o un enlace simbólico bajo un * x donde Apache 'simula' que una carpeta está en la raíz web. Probablemente te sea más útil a largo plazo.

Respondida el 04/08/2008 a las 06:00
fuente por usuario sparkes

votos
8

Como nota al margen, si usted está tratando de conseguir XAMPP utilizar una unidad de red como la raíz del documento tiene que utilizar rutas UNC en httpd.conf. XAMPP no reconocerá las unidades de red mapeadas.

Por ejemplo, la siguiente no funcionará, DocumentRoot "X: / Webroot"

Pero esta voluntad, DocumentRoot "//192.168.10.100/webroot" (tenga en cuenta las barras diagonales, no barras diagonales inversas)

Respondida el 28/01/2011 a las 04:04
fuente por usuario Jason

votos
4

Ninguna de estas soluciones funcionó fácilmente. Aquí está la solución más simple para permitir que Apache 2 aloje sitios web fuera de htdocs:

Debajo de la directiva "DocumentRoot" en httpd.conf, debería ver un bloque de directorio. Reemplace este bloque de directorio con:

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

RECUERDE NO USAR ESTA CONFIGURACIÓN EN UN ENTORNO REAL

Respondida el 26/01/2009 a las 04:11
fuente por usuario JasonT