como obter subdomínio para vincular com a pasta?

3

Estou executando o xampp que tem o Apache no Windows para um servidor de desenvolvimento. Eu preciso usar um subdomínio de localhost para acessar minha pasta localhost / images / indo para h ## p: //images.localhost

No entanto, estou com problemas, postei uma imagem abaixo mostrando meu problema.

Então a questão é como você configura um subdomínio no Apache e realmente tem que funcionar para uma pasta como eu preciso?

Veja esta imagem, desculpe, novos usuários não podem postar mais de 1 URL e NÃO imagens, então aqui está minha URL para uma imagem importante

link

VERSÃO ATUALIZADA

My apache conf file

NameVirtualHost localhost:8080

<VirtualHost localhost:8080>
   ServerName localhost
   ServerAdmin [email protected]
   DocumentRoot c:\server\htdocs
</VirtualHost>

<VirtualHost images.localhost:8080>
   ServerName images.localhost
   ServerAdmin [email protected]
   DocumentRoot c:\server\htdocs\images
</VirtualHost>


My windows host file

127.0.0.1 images.localhost
127.0.0.1 *.localhost
    
por JasonDavis 26.07.2009 / 04:27

6 respostas

1

O problema, até onde eu entendo de hospedagem virtual Apache, é que você está usando um pega-tudo na sua configuração de hosts virtuais e usando um DocumentRoot mútuo, em vez de definir explicitamente cada nome do VHost e DocumentRoot:

*: 8080 é a sua configuração base NameVirtualHost.

Isso irá capturar todas as solicitações para: 8080 e redirecionará todas as solicitações para o host virtual que corresponda à diretiva.

Torna-se problemático quando você tem duas diretivas Vhost que são nomeadas da mesma forma, e um dos DocumentRoot da diretiva corresponde ao DocumentRoot do servidor. Se não houver um DocumentRoot "Overriding" que o servidor tenha separadamente, o Apache avaliará o DocumentRoot de cada Vhost, encontrando o "Occam's Razor" dos valores encontrados se vários Vhost compartilharem um caminho raiz.

Neste caso ... \ htdocs é o DocumentRoot para ambos, porque ... \ images está contido dentro de ... \ htdocs. Assim, qualquer pedido será automaticamente padronizado para o Vhost que oferece somente ... \ htdocs como seu DocumentRoot.

Eu percebi que isso era um pouco confuso, então para corrigir isso: Mude para a hospedagem virtual baseada em nome.

UPDATE (2009-08-25)
Há algo que preciso esclarecer antes de prosseguir:

O Apache e outros servidores da web nunca escutam: 8080 por padrão. Além disso, os clientes da Web, como o Firefox, nunca fazem uma solicitação para: 8080 por padrão. Eu assumi que você entendeu isso a partir do seu post original, uma vez que sua diretiva VHost mostrou uma porta não padrão de: 8080. Agora, não tenho tanta certeza disso.

Para que a revisão anterior da minha postagem funcione para você, já que ela foi configurada (sem os redirecionamentos da porta 80 ou o que você tem), é necessário especificar a porta ao solicitar uma página:

link e link

Eu deveria ter incluído essa informação. Como eu disse, presumi que estava claro no seu post original. Minhas desculpas por isso. Por extensão, eu também presumi que você estava configurando dessa maneira porque outro servidor estava escutando na porta 80. Se isso for verdade, então você pode considerar combinar os dois servidores em uma configuração ou desativar a alternativa enquanto faz seu trabalho com o xampp .

Portanto, vamos corrigir as diretivas do VHost para ouvir a porta 80, que é a porta padrão de onde as páginas são atendidas e solicitadas pelos servidores e clientes, respectivamente.

Também vou me dedicar aos comentários sobre como definir as permissões localizadas para as pastas das quais você está veiculando dados, pois estou preocupado que haja uma / Diretiva que esteja afetando sua capacidade de obter páginas de seus sites .

Diretivas do VirtualHost ATUALIZADAS (2009-08-25):

NameVirtualHost localhost:80

<VirtualHost localhost:80>
   ServerName localhost

   # Naturally, this can be changed to a real email.
   ServerAdmin [email protected]

   # Set our DocRoot for the VHost.
   DocumentRoot c:\xampp\htdocs

   # Define access perms for our DocRoot.
   <Directory "c:\xampp\htdocs">
     # We're going to define Options, Override perms, and Allow directives.
     # FollowSymLinks probably doesn't work in Windows, but we'll keep it for posterity.
     Options Indexes MultiViews FollowSymLinks

     # Disallow Override
     AllowOverride None

     # Setup 1. Allow only *from* localhost. Comment out the following 3 lines, 
     # and uncomment Setup 2 below to allow access from all.
     Order deny,allow
     Deny from all
     Allow from 127.0.0.0/255.0.0.0

     # Setup 2. Allow all. Uncomment the following 2 lines, and comment out Setup 1.
     #Order allow,deny
     #Allow from all

   </Directory>
</VirtualHost>

<VirtualHost images.localhost:80>
   ServerName images.localhost

   # Naturally, this can be changed to a real email.
   ServerAdmin [email protected]

   # Set our DocRoot for the VHost.
   DocumentRoot c:\xampp\htdocs\images

   # Define access perms for our DocRoot.
   <Directory "c:\xampp\htdocs\images">
     # We're going to define Options, Override perms, and Allow directives.
     # FollowSymLinks probably doesn't work in Windows, but we'll keep it for posterity.
     Options Indexes MultiViews FollowSymLinks

     # Disallow Override
     AllowOverride None

     # Setup 1. Allow access only from localhost. Comment out the following 3 lines, 
     # and uncomment Setup 2 below.
     Order deny,allow
     Deny from all
     Allow from 127.0.0.0/255.0.0.0

     # Setup 2. Allow all. Uncomment the following 2 lines, and comment out Setup 1.
     #Order allow,deny
     #Allow from all

   </Directory>
</VirtualHost>

O Apache ficará irritado com essa configuração se não houver um nome DNS correspondente que possa ser encontrado para um host virtual, portanto, a recomendação anterior sobre a modificação do arquivo de hosts do sistema ainda é precisa. Observe que, quando você edita o arquivo hosts, você pode colocar todos os aliases de um único IP na mesma linha, poupando-lhe alguma confusão.

127.0.0.1   localhost   images.localhost

Você também pode fazer Vhosting baseado em IP, mas eu não recomendaria isso. É muito mais envolvido do que o que você está fazendo e é apenas "realmente" necessário quando você está lidando com vários vHosts usando SSL.

De qualquer forma, a configuração que descrevi funciona exatamente como esperado no meu sistema (Ubuntu 8.10 x86_64, Apache 2.2.9) e também deve funcionar bem no seu.

    
por 04.08.2009 / 01:28
0

Eu imagino que o seu problema é tentar fazer um subdomínio de "localhost". A melhor coisa a fazer seria alterar seus nomes de servidor para algo como "localdomain.com" e "images.localdomain.com" (qualquer coisa funcionará realmente) e, em seguida, modificar seu arquivo de hosts para mapear esse domínio para 127.0.0.1

Já faz um tempo desde que usei windows (desculpe), mas acredito que o arquivo hosts esteja em c: \ windows \ system32 \ etc \ hosts

E o formato do domínio falso seria algo como:

localdomain.com     127.0.0.1

Então, você só precisa fazer um bounce no seu servidor XAMPP e tudo deve estar pronto.

Espero que ajude:)

    
por 26.07.2009 / 05:46
0

A configuração parece boa para mim. Verifique se há problemas simples, como reiniciar o apache depois de alterar o arquivo de configuração, etc.

    
por 26.07.2009 / 06:54
0

Conforme descrito no RFC 2606 .localhost. é tratado como especial.

Mas uma outra coisa a considerar: qual é o diretório padrão? Pode ser que nenhuma das suas configurações virtuais esteja funcionando corretamente. Mas, em vez disso, o DocumentRoot do próprio servidor está sempre lidando com as solicitações.

    
por 26.07.2009 / 23:36
0

O problema é que 'localhost' sempre resolve para 127.0.0.1, mas subdomínios de localhost, como seu 'images.localhost' não estão definidos e, portanto, não estão resolvendo. Você pode corrigir isso localmente editando o arquivo hosts do seu sistema (geralmente em c: \ windows \ system32 \ drivers \ etc) e adicionando a seguinte linha:

127.0.0.1 images.localhost

Você também pode adicionar:

127.0.0.1 *.localhost

Depois de salvar o arquivo hosts, seus subdomínios devem ser resolvidos corretamente.

Editar: vejo que você tem os vhosts configurados para escutar na porta 8080, mas seus URLs não incluem o número da porta. Você precisa navegar para os endereços com: 8080 neles assim:

http://images.localhost:8080/layout/homepage/welcome_image.jpg

Como alternativa, você pode alterar os vhosts para ouvir: 80.

Acredito que o motivo pelo qual o localhost funciona é que o seu conf Apache principal tem Listen 127.0.0.1 e DocumentRoot c:\xampp\htdocs .

    
por 27.07.2009 / 06:52
0

I even tried using a real domain name in my hosts file and my computer will just timeout trying to load it

Talvez você tenha um problema com a resolução de nomes. Você pode tentar "ping images.localhost" na linha de comando (Iniciar - > Executar - > "cmd")

Se esse subdomínio não estiver funcionando, talvez você possa tentar com um real. Meu último artigo pode ajudar: 42foo: todos os hosts virtuais que você precisa para o seu desenvolvimento web

Eu tenho isso trabalhando em alguns domínios, embora eu vincule todos eles à mesma raiz do documento:

<VirtualHost *:80>
        DocumentRoot /srv/apps/mydomain/current/public
        ServerName mydomain.com
        ServerAlias www.mydomain.com
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /srv/apps/mydomain/current/public
        ServerName assets0.mydomain.com
        ServerAlias assets1.mydomain.com
        ServerAlias assets2.mydomain.com
        ServerAlias assets3.mydomain.com
</VirtualHost>
    
por 30.07.2009 / 17:07