Faça XAMPP / Apache servir arquivo fora do htdocs

votos
263

É possível configurar xampp para servir um arquivo fora do htdocsdiretório?

Por exemplo, digamos que eu tenho um arquivo localizado da seguinte forma:

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

e meus xampp arquivos normalmente são servidas a partir de:

C:\xampp\htdocs\

(porque essa é a configuração padrão) Existe alguma maneira de fazer Apache reconhecer e servir o meu TransitCalculator.phparquivo sem movê-lo sob htdocs? De preferência, eu gostaria Apache para servir / ter acesso a todo o conteúdo do diretório de projetos, e eu não quero mover o diretório de projetos sob htdocs.

edit: editado para adicionar o Apache para o título da pergunta para fazer Q / A mais pesquisável

Publicado 04/08/2008 em 17:54
fonte usuário
Em outras línguas...                            


6 respostas

votos
324

Ok, por pix0r 's, faíscas ' e Dave respostas 's parece que existem três maneiras de fazer isso:


Hosts virtuais

  1. Abra C: \ xampp \ apache \ conf \ extras \ httpd-vhosts.conf.
  2. Un-comentário linha 19 ( NameVirtualHost *:80).
  3. Adicione seu anfitrião virtual (~ linha 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 o seu arquivo hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Adicionar

    127.0.0.1 transitcalculator.localhost #transitCalculator
    

    até o fim do arquivo (antes do Spybot - Search & Destroy coisas se você tem que instalado).

  6. Salvar (Você pode ter que salvá-lo para o ambiente de trabalho, alterar as permissões sobre o arquivo hosts de idade (clique direito> Propriedades) e copie o novo para o diretório sobre o antigo (ou renomear o antigo) se você estiver usando Vista e têm dificuldade).
  7. Reiniciar o Apache.

Agora você pode acessar esse diretório, navegando até http: //transitcalculator.localhost/ .


Faça um Alias

  1. Começando ~ linha 200 do seu http.confarquivo, copiar tudo entre <Directory "C:/xampp/htdocs">e </Directory>(~ linha 232) e colá-lo imediatamente abaixo com C:/xampp/htdocssubstituído com seu diretório desejado (neste caso C:/Projects) para dar o seu servidor as permissões corretas para o novo diretório.

  2. Encontrar a <IfModule alias_module></IfModule>seção (~ linha 300) e adicionar

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

    (ou o que é relevante para os seus desejos) abaixo do Aliasbloco de comentário, dentro das tags do módulo.


Mudar a sua raiz de documentos

  1. Editar ~ linha 176 em C: \ xampp \ Apache \ conf \ httpd.conf; mudar DocumentRoot "C:/xampp/htdocs"para #DocumentRoot "C:/Projects"(ou o que quiser).

  2. Linha de edição ~ 203 para corresponder ao seu novo local (neste caso C:/Projects).


Notas:

  • Você tem que usar a barra "/" em vez de barras invertidas "\".
  • Não incluem a fuga "/" no final.
  • reinicie o servidor .
Respondeu 04/08/2008 em 18:05
fonte usuário

votos
90

Você pode colocá-la editando o DocumentRoot configuração no XAMPP \ apache \ conf \ httpd.conf.

Deve ser atualmente:

C: / xampp / htdocs

Alterá-lo para:

C: / projetos / transitCalculator / trunk

Respondeu 04/08/2008 em 18:00
fonte usuário

votos
49

A VirtualHost também trabalhar para isso e pode funcionar melhor para você como você pode hospedar vários projetos sem a necessidade de subdiretórios. Veja como fazer isso:

httpd.conf (. ou adicional \ httpd-vhosts.conf relação ao httpd.conf Trailing barras "\" pode fazer com que ele não 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> 

arquivo HOSTS (C: \ Windows \ system32 \ drivers \ etc \ hosts geralmente):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Agora reinicie o XAMPP e você deve ser capaz de acessar http: //transitcalculator.localhost/ e irá mapear diretamente para o diretório.

Isso pode ser útil se você está tentando replicar um ambiente de produção, onde você está desenvolvendo um site que vai sentar-se na raiz de um nome de domínio. Você pode, por exemplo, aponte para arquivos com caminhos absolutos que irão transitar para o servidor:

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

enquanto que em um ambiente usando pseudônimos ou subdiretórios, você precisa manter o controle de exatamente onde o "imagens" diretório foi relativo ao arquivo atual.

Respondeu 05/08/2008 em 16:30
fonte usuário

votos
14

Você pode configurar o Apache para servir páginas de qualquer lugar com quaisquer restrições, mas é normalmente distribuído de forma mais segura.

Editar seus arquivos apache (http.conf é um dos nomes mais comuns), vai permitir-lhe definir qualquer pasta para que ele aparece no seu webroot.

EDITAR:

apelido myapp c: \ myapp \

Eu editei a minha resposta para incluir o formato para criar um alias no arquivo http.conf que é como uma espécie de atalho no Windows ou um link simbólico sob un * x, onde Apache 'finge' a pasta está no webroot. Este é provavelmente vai ser mais útil para você, a longo prazo.

Respondeu 04/08/2008 em 18:00
fonte usuário

votos
8

Como uma nota lateral, se você está tentando obter XAMPP usar uma unidade de rede como a sua raiz de documentos que você tem que usar caminhos UNC em httpd.conf. XAMPP não reconhecerá suas unidades de rede mapeadas.

Por exemplo, o seguinte não irá funcionar, DocumentRoot "X: / webroot"

Mas essa vontade, DocumentRoot "//192.168.10.100/webroot" (observe as barras, e não barras invertidas)

Respondeu 28/01/2011 em 04:04
fonte usuário

votos
4

Nenhuma dessas soluções trabalhou facilmente. Aqui está a solução mais simples para permitir Apache 2 para hospedar sites fora do htdocs:

Debaixo da directiva "DocumentRoot" em httpd.conf, você deve ver um bloco de diretório. Substituir este bloco de diretório com:

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

Lembre-se não usar essa configuração em um ambiente real

Respondeu 26/01/2009 em 16:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more